IntelliJ IDEA 2025.2 Help

Spring 调试器

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

安装 Spring 调试器插件

此功能依赖于 Spring Debugger 插件,您需要安装并启用它。

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

  2. 打开 Marketplace 选项卡,找到 Spring Debugger 插件,然后点击 安装 (如果出现提示,请重启 IDE)。

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

检查当前配置

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

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

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

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

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

数据库连接

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

除了其它场景外,在以下情况下这可能会很有用:

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

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

  3. 请点击 刷新 按钮。

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

编辑器标签页中数据库表的内容

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

在 IntelliJ IDEA 的调试器中计算表达式时,您可以访问所有属性和 Bean,无论它们是否存在于当前执行上下文中。 这使您可以调用任意 Bean 的方法以检索数据并验证假设。

从编辑器对表达式求值 / 添加监视

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

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

    带有“计算表达式”按钮的浮动工具栏

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

计算任意表达式 / 添加监视

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

    “Variables” 选项卡中的表达式

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

    “Variables” 选项卡中表达式的结果

为方便起见,您可以点击靠近 result 行的 浏览元素 ,在单独的对话框中查看集合。 该视图会对结果进行分页并允许您进行搜索和筛选。

“集合展示”对话框显示大型集合的内容

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

%alt

求值 Spring 属性

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

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

    “Variables” 选项卡中的属性值及详情

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

断点中的表达式

与表达式和监视类似,您也可以在断点中使用表达式。 这使您可以添加临时日志,并仅在条件满足时暂停应用程序。

设置条件断点

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

    “行断点”弹出窗口中“条件”字段的表达式

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

设置日志断点

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

    “断点”对话框中“计算并记录”字段的表达式

    断点将在挂起应用程序的同时将表达式的结果日志输出到控制台。 如果您只想记录表达式结果而不挂起应用程序,请取消选中 挂起 复选框。

    “行断点”弹出窗口中“计算并记录”字段的表达式和取消选中的“挂起”复选框

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

调试事务

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

查看事务详细信息

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

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

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

在事务中,您也可以导航到代码中事务被初始化的位置。

  • 变量 标签页中,点击 导航到源代码

    “线程和变量”选项卡中的“导航到源”按钮

对于包含在事务中的 JPA 实体,您可以在 调试 工具窗口的 变量 标签页中,以及代码中提及该实体的位置查看其当前状态:

实体状态显示在编辑器中靠近实体使用处

检查已加载的 bean

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

项目工具窗口中 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 调试器

    运行配置设置中的“修改选项”按钮
最后修改日期: 2025年 9月 22日