Spring Boot 社区最近的更新节奏相当紧凑。继 1 月 14 日发布 4.0.1 版本后,团队在 1 月 22 日又迅速推出了 4.0.2 维护版本。对于依赖 Spring Boot 构建关键应用的开发者而言,理解本次更新的内容尤为重要,尤其是它解决了一些可能影响生产环境的棘手问题。

4.0.2 版本概览
Spring Boot 4.0.2 主要是一个专注于问题修复的维护版本,其更新内容可以概括为三大方面:
- 超过 20 项 Bug 修复:涉及 Kafka、WebFlux、Actuator、Native Image 等多个核心模块。
- 40 多项依赖升级:包括 Spring Framework 7.0.3、Hibernate 7.2.1.Final 等基础组件的更新。
- 文档改进:对多处文档错误和过时链接进行了修正。
其中最值得关注的,莫过于一个与生产环境稳定性密切相关的重大修复。
关键修复:Kafka 事务自动配置回归
对于使用 Kafka 进行消息传递并依赖其事务保障数据一致性的应用来说,这是一个至关重要的修复。
问题根源与影响
该问题对应的 Issue 编号为 #48880,标题直指核心:No TransactionAutoConfiguration with spring-boot-starter-kafka。在 Spring Boot 4.0.0 和 4.0.1 版本中,当你引入 spring-boot-starter-kafka 依赖后,本应自动生效的 TransactionAutoConfiguration 配置类并未被加载。
这意味着什么呢?
- 使用
@Transactional 注解的 Kafka 生产者事务完全失效。
KafkaTemplate 的事务支持功能被禁用。
- 在生产环境中,这可能导致消息重复发送或丢失,引发严重的数据不一致问题。
修复方案与升级建议
该问题的根源在于 Spring Boot 4.0 版本重构后,自动配置的加载顺序和元数据声明出现了偏差。4.0.2 版本重新梳理了相关依赖,确保 KafkaTransactionManager 能够被正确初始化和配置。
强烈建议:如果你的应用正在使用或计划使用 Kafka 事务,应尽快将项目升级至 Spring Boot 4.0.2 版本,以避免潜在的生产事故。
其他值得关注的重点修复

性能优化:Bean 条件评估优化 (Issue #48840)
在高并发或大型微服务应用中,Spring Boot 启动时对 BeanFactory 的不必要重复查询会导致启动时间显著增加。4.0.2 版本通过引入缓存机制优化了 Bean 条件的评估逻辑,预计能为复杂应用带来 10-15% 的启动速度提升。
云原生兼容性:Native Image 修复 (Issue #48812)
随着 GraalVM 原生编译的普及,与 Java 新版本的兼容性尤为重要。该修复解决了在 Java 25 环境下,使用 GraalVM 编译 Native Image 时,Actuator 的 /info 端点因 VirtualThreadSchedulerMXBean 支持问题而崩溃的 Bug,提升了 Spring Boot 在 Serverless 等云原生场景下的稳定性。
测试框架行为修正 (Issue #48653)
在使用 @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) 进行集成测试时,之前的版本错误地将随机端口配置同时应用于主应用服务器和管理服务器(Actuator)。4.0.2 修正了这一行为,现在随机端口仅作用于主服务器,使得测试行为更符合开发者预期,减少了不必要的调试。
安全依赖优化 (Issue #48685)
spring-boot-cloudfoundry 模块此前错误地强制依赖了 spring-boot-security,导致即使应用本身无需安全功能,也会引入相关依赖。4.0.2 已将其改为可选依赖,真正实现了“按需引入”,有助于减少应用的无谓依赖和攻击面。
核心依赖升级列表
本次版本同步升级了 40 多项第三方依赖,其中几个关键的升级包括:
- Spring Framework 7.0.3:修复了 SpEL 表达式可能存在的内存泄漏问题。
- Hibernate 7.2.1.Final:对二级缓存(L2 Cache)性能进行了优化。
- Jackson 2.20.2:增强了对 Java 25 新特性的支持。
- Micrometer 1.16.2:修复了 Prometheus 指标导出器潜在的线程安全问题。
- Reactor 2025.0.2:提升了响应式流背压处理的稳健性。
完整的依赖升级列表,请参考官方 Release Notes: https://github.com/spring-projects/spring-boot/releases/tag/v4.0.2
需要注意的变更点
本次更新包含一项轻微的破坏性变更,主要影响 Jetty 用户:
Spring Boot 移除了 spring-boot-starter-jetty 中不必要的 org.eclipse.jetty.ee11:jetty-ee11-servlets 依赖。如果你的应用代码直接引用了该 JAR 包中的类,则需要在构建文件中显式声明此依赖。
例如,在 Maven 的 pom.xml 中手动添加:
<!-- 若编译报错,手动添加此依赖 -->
<dependency>
<groupId>org.eclipse.jetty.ee11</groupId>
<artifactId>jetty-ee11-servlets</artifactId>
</dependency>
如何升级
升级到 Spring Boot 4.0.2 非常简单。以 Maven 项目为例,更新父项目或依赖的版本号即可:
<!-- Maven -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>4.0.2</version>
</parent>
总结
Spring Boot 4.0.2 虽然是一个小版本迭代,但其修复的问题却具有相当的重要性。尤其是 Kafka 事务自动配置缺失 这个 Bug,直接关系到使用消息队列进行可靠数据处理的系统稳定性,建议相关项目优先安排升级评估。
此外,对 Native Image 的兼容性修复、启动性能的优化以及测试行为的修正,都体现了 Spring Boot 团队对生产稳定性和开发者体验的持续关注。总体来看,4.0.2 是一个值得推荐的稳定化版本。你也可以将升级中遇到的问题或心得分享到 云栈社区 ,与其他开发者一同交流讨论。