llms.txt: machine-readable documentation index. Markdown version of this page is also available.

IntelliJ IDEA 2026.3 Help

Spring 调试器

IntelliJ IDEA 可帮助处理许多 Spring 特定的设计时问题。 不过,其中一些问题可能需要运行时调查。 在这种情况下,IntelliJ IDEA 的调试器会识别 Spring 上下文,并提供用于检查以调试模式运行的 Spring 应用程序并与之交互的工具。

安装 Spring 调试器插件

此功能性依赖于 Spring 调试器插件,需要安装并启用该插件。

  1. 按 Ctrl+Alt+S 打开设置,然后选择 插件。

  2. 找到 Spring 调试器 插件,然后点击 安装。 如果出现提示,请重启 IDE。

Spring 调试器支持以下 运行配置 类型:

检查当前配置

在 .properties 中定义的属性通常会在运行时被覆盖,覆盖源可能是另一个 .properties 文件或某个 Bean。 如果运行时的实际值与 .properties 文件中指定的值不同,则相应行会显示一个 内联提示 ,以揭示实际的配置值。

重写的属性值显示在 application.properties 文件中

如果属性在多个上下文中定义,嵌入提示会显示多个定义。

  • 要查看哪一段代码重写了属性值,请点击显示实际值的嵌入提示。 重写代码会在编辑器中打开。

    嵌入提示显示属性的实际值

数据库连接

在调试模式下运行 Spring 应用时,IntelliJ IDEA 会在 数据库 工具窗口中显示当前的数据库连接。

除其他场景外,在处理以下内容时,这可能很有用:

Database 工具窗口显示一个在随机端口上运行的数据库
  1. 在 调试模式 下运行 Spring 应用。

  2. 打开 数据库 工具窗口。

  3. 点击 刷新 按钮。

在已发现的数据库中,您可以查看表、直接执行 SQL 查询、浏览架构等,其方式与使用任何其他 数据源 相同。

编辑器选项卡中的数据库表内容

调试器表达式中的 Spring 上下文

在 IntelliJ IDEA 的调试器中对表达式求值时,可以访问所有属性和 bean,无论它们是否存在于当前执行上下文中。 这样可以执行任何 bean 的方法来检索数据并验证假设。

在编辑器中计算表达式/添加监视

  • 按住 Alt 并点击您想要评估的表达式。

    显示 bean 详细信息的弹出窗口
  • 或者,选择表达式,然后按 Ctrl+Alt+F8 或从出现的浮动工具栏中选择 计算表达式。

    带有"表达式求值"按钮的浮动工具栏

    您可以通过点击工具栏中的 将该表达式添加到监视。

对任意表达式求值 / 添加监视

  • 要计算任意表达式,请在 变量 选项卡中的 计算表达式 字段中输入它,然后按 Enter。

    Variables 选项卡中的表达式

    结果显示在下面。 您还可以通过点击表达式字段右侧的 来 将表达式添加到 watches。

    Variables 选项卡中表达式的结果

要在单独的对话框中查看集合视图,请点击靠近 结果 行的 探索元素。 此视图会对结果分页,并允许搜索结果以及对结果应用筛选器。

"集合呈现"对话框显示大型集合的内容

如果表达式的结果是 JSON 或 XML 格式的字符串,可以将其作为结构化文档查看。 这使您可以使用编辑器功能,例如 代码折叠和 扩展或缩小选择 ,以便处理子树并在大型对象中方便地导航。

%alt

对 Spring 属性求值

  1. 在表达式字段的右侧,从菜单中选择 Spring 属性。

  2. 输入您要计算的属性,然后按 Enter。 属性值和详细信息显示在 结果 节点下。

    Variables 选项卡中的属性值和详细信息

    如果您想为该属性设置监视,请在表达式字段的右侧点击 。

断点中的表达式

与表达式和监视类似,可以在断点中使用表达式。 这样可以添加临时日志记录,并仅在满足条件时挂起应用程序。

设置条件断点

  • 右键点击 断点 ,并在 条件 字段中输入条件。

    "行断点"弹出窗口,在"条件"字段中输入表达式

    仅当条件的结果为 true 时,断点才会挂起应用程序。

设置日志断点

  • 右键点击 断点 ,点击 更多 ,并在 评估并记录 字段中输入日志表达式。

    "断点"对话框,在"求值并记录"字段中输入表达式

    断点除了挂起应用程序外,还会将表达式结果日志到控制台。 若只将表达式日志而不挂起应用程序,请取消选中 挂起 复选框。

    "行断点"弹出窗口,在"求值并记录"字段中输入表达式,并取消选中"暂停"复选框

有关断点类型和筛选器的信息,请参阅 断点 页面。

查看 bean 的运行时信息

可以直接在编辑器中查看 bean 的运行时信息。

  1. 在编辑器中,点击已加载 bean 的类定义旁边的装订区域图标(Spring bean)。

    已加载 bean 的类定义旁边的装订区域图标
  2. 在出现的菜单中,选择 显示运行时信息。

    点击已加载 bean 的类定义旁边的装订区域图标后出现的菜单中的'显示运行时信息'选项

会出现包含以下信息的弹出窗口:

  • 已注入到 – 当前注入了此 bean 的其他 bean

  • 依赖于 – 注入到此 bean 中的其他 bean;与 已注入到 相反。

包含 bean 运行时信息的弹出窗口

还可以在编辑器中以嵌入提示的形式查看运行时信息,而无需挂起应用程序。 对于每个已 inject 的 bean,嵌入提示会显示当前被 inject 的是哪个实现,以及作用域、上下文和配置文件等附加信息。

运行时 bean 嵌入提示

要了解已 inject 的 bean 来自何处,请点击嵌入提示,IntelliJ IDEA 会导航到 bean 定义。

调试事务

如果当前调试的操作发生在 JPA 事务内,可以直接在调试器中查看会话上下文,包括事务的隔离级别、传播状态和缓存内容。

查看事务详细信息

  1. 在事务内执行的某一行挂起应用程序。

    应用已在标记为 @Transactional 的方法中的某一行挂起
  2. 打开 调试 工具窗口并切换到 变量 选项卡。 事务详细信息显示在 事务 节点下。

    Variables 选项卡中的事务详细信息

在事务中时,还可以导航到代码中启动该事务的位置。

  • 在 变量 选项卡中,点击 导航到源代码

    Threads 与 Variables 标签页中的"导航到源"按钮

对于事务中包含的 JPA 实体,可以在 调试 工具窗口的 变量 选项卡中以及代码中的实体提及位置附近查看其当前状态:

实体状态显示在编辑器中实体用法附近

查看已加载的 bean

以调试模式运行 Spring 应用程序时, 项目 工具窗口会从 Spring 的角度指示每个 bean 的运行时状态:

Project 工具窗口中的 bean 类具有不同图标

图标颜色指示以下状态:

  • 绿色 – 已加载

  • 透明 – 未加载

  • 黄色 – 已模拟

此外,bean 可以具有以下图标之一:

  • Spring Java bean :自动发现带有 @Component 注解的 bean 以及带有 @Bean 注解的方法。

  • :配置 bean(使用 @Configuration 或其他隐式包含 @Configuration 的注释进行注释)。

  • :存储库 bean(带有 @Repository 注解或扩展 org.springframework.data.repository.Repository 接口)。

  • :控制器(使用 @Controller 和 @RestController 注解的类)。

  • Spring bean :隐式 bean,即由 Spring 添加的未明确定义的服务 bean。

  • Spring 抽象 beans :抽象 XML beans(在 XML 文件中用 abstract="true" 属性定义)。

  • Spring 抽象 beans :基础设施 bean,也就是在与配置和常规基础设施支持相关的 XML 文件中定义的 bean,如 ViewResolver 或带有 context:component-scan 的 bean。

  • Spring 原型 bean :具有 prototype 范围的 beans(在 XML 文件中使用 scope="prototype" 定义)。

  • Spring bean :在 XML 文件中定义的其他 bean。

禁用 Spring 调试器

可以为特定的 运行/调试配置 禁用 Spring 调试器功能。

  • 在运行/调试配置的设置中,点击 修改选项 ,然后选择 禁用 Spring 调试器。

    运行配置设置中的"修改选项"按钮

调试远程 Spring 应用程序

Spring 调试器还支持调试在以下嵌入式容器中运行的远程 Spring 应用程序:

  • Tomcat

  • Jetty

  • Undertow

容器之间的区别

由于受支持容器中的线程模型不同,Spring 调试器传送上下文时可能会有延迟:

  • Tomcat – 上下文立即可用

  • Jetty – 上下文在短暂延迟后可用(等待第一个 HTTP 请求)

  • Undertow – 上下文在短暂延迟后可用(等待第一个 HTTP 请求)

使用调试代理运行 Spring 应用程序

  • 使用会附加调试代理的虚拟机选项启动 Spring 应用程序。

    在 Docker Compose 配置中通过 JAVA_TOOL_OPTIONS 提供 VM 选项的示例:

    http-server: depends_on: - postgresql image: 'jb/http-server:latest' environment: - SPRING_DATASOURCE_URL=jdbc:postgresql://postgresql:5432/db - SPRING_DATASOURCE_USERNAME=user - SPRING_DATASOURCE_PASSWORD=secret - JAVA_TOOL_OPTIONS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 ports: - '8080:8080' - '5005:5005' # Map debug port 5005 to host port 5005

    有关 VM 选项的更多信息,请参阅 调试代理

创建运行/调试配置

  1. 前往 运行 | 编辑配置。 或者,按 Alt+Shift+F10 ,然后按 0。

  2. 在 运行/调试配置对话框中,点击 工具栏上的按钮或按下 Alt+Insert。 选择 远程 JVM 调试 从列表中。

  3. 在 调试器模式 指定调试器是应连接到远程 JVM 还是监听传入的连接。

    如果您选择 侦听远程 JVM ,请指定在远程 JVM 断开连接后是否要自动重新启动调试器。 这样,调试器将随时准备处理传入的连接。

  4. (适用于 Windows)可选择指定所需的 传输方式。 IntelliJ IDEA 会自动选择适当的传输方式,因此除非您对通信方法有特殊要求,否则无需配置。

  5. 指定远程 JVM 的主机和端口。 支持 IPv4 和 IPv6。 请确保端口指定正确、未被占用且未被防火墙阻止。

  6. 指定查找源代码的模块。 IntelliJ IDEA 将首先检查选定的模块,然后是其他模块(如果有的话)。 源使用完全限定类名进行匹配。 如果完全限定名称没有匹配项,IntelliJ IDEA 会尝试通过文件名查找匹配项。

  7. 可选:配置日志。 有关日志设置,请参阅 日志。

  8. 如果您尚未为调试对象 JVM 配置调试代理,您可以从 远程 JVM 的命令行参数 字段中复制所需的 VM option。

    debug-agent-option.png

开始运行/调试配置

  1. 请确保主机应用程序正在运行,并以添加调试代理的 VM option 启动。

  2. 启动运行/调试配置 您之前创建的。

    debug_select_rc.png
2026年 11月 3日