Spring Boot 4.0 于 2025 年末正式发布,它是继 3.0 之后的又一个重大里程碑版本。这一代的核心目标是模块化、性能提升以及对现代 Java 生态(Java 25)的全面拥抱。
以下是 Spring Boot 4.0 相比前几代(特别是 3.x)的核心新能力和新 API:
1. 核心架构:全面的模块化 (Modularization)
这是 Spring Boot 4.0 最显著的变化。
- 痛点: 在 3.x 及以前,
spring-boot-autoconfigure是一个巨大的 JAR 包,包含了几百个框架的配置逻辑。即使你只写一个简单的 Web 服务,类路径里也会塞满 LDAP、Batch 等无关的配置元数据。 - 新能力: 4.0 将这个庞然大物拆分成了数十个细粒度的模块(如
spring-boot-autoconfigure-data-jpa)。 - 收益: 显著减少了类路径扫描时间、降低了内存占用,并使 GraalVM 原生镜像编译时的元数据处理更加高效。
2. 核心 API 与功能增强
内置 API 版本管理 (Native API Versioning)
Spring Boot 4.0 终于提供了官方的一等公民级 API 版本支持。
- 新用法: 可以在
@RequestMapping或通过属性配置来定义版本。 - 支持模式: 支持路径(/v1/..) 、请求头(X-API-Version) 、查询参数以及 Media Type 四种主流版本控制策略。
- API: 引入了
ApiVersionResolver、ApiVersionParser等接口供开发者自定义扩展。
声明式 HTTP 客户端 (@HttpExchange)
在 3.2 引入 RestClient 的基础上,4.0 进一步强化了声明式客户端。
- 新能力: 只需定义接口并标注
@HttpExchange,Spring 会自动生成实现。4.0 为此增加了更多的自动配置属性,不再需要繁琐的各种Bean定义。
JmsClient - 现代化的消息接口
继 JdbcClient 和 RestClient 之后,Spring 推出了 JmsClient。
- 特点: 采用流畅的链式 API(Fluent API) ,比传统的
JmsTemplate更易读、易用,且更好地支持同步/异步操作。
内置的韧性能力 (Resilience)
Spring Framework 7 / Boot 4 直接吸收了部分 Spring Retry 的功能。
- 新 API: 提供了内置的
@Retryable增强支持,原生支持重试(Retry) 、超时(Timeout)和并发限制(Concurrency Limiting) ,且对响应式(Reactive)方法有更好的适配。
3. 环境基础与基准提升
Spring Boot 4.0 显著提高了技术栈的底座:
| 特性 | Spring Boot 4.0 基准 | 说明 |
|---|---|---|
| Java 版本 | JDK 17 (最低) / JDK 25 (推荐) | 充分利用虚拟线程(Loom)和最新性能优化。 |
| Jakarta EE | Jakarta EE 11 | 升级了 Servlet 6.1, JPA 3.2, Bean Validation 3.1。 |
| Kotlin | Kotlin 2.2 | 确认为官方基准,优化了空安全检查。 |
| Null Safety | JSpecify | 整个 Spring 体系迁移到 JSpecify 标准,提供更强的静态代码检查。 |
4. 其它值得关注的变化
- 测试增强: 引入了
RestTestClient,并支持在测试环境中使用多个TaskDecorator组合。 - SSL 健康检查: Actuator 的 SSL 端点现在可以显示更详细的证书链状态,包括即将过期的证书提示。
- 移除了 Undertow: 值得注意的是,Spring Boot 4.0 官方移除了对 Undertow 容器的内置支持(建议迁移到 Tomcat 11 或 Jetty 12)。
- Jackson 3.0: 默认支持 Jackson 的最新大版本,提升了 JSON 处理效率。
总结:我该升级吗?
- 如果你追求极速启动(尤其是在 Serverless 或 K8s 环境下),4.0 的模块化和 AOT 增强非常有吸引力。
- 如果你需要官方的 API 版本管理或更优雅的 JMS/HTTP 调用,4.0 提供了更好的开发体验。
您是准备将现有的项目从 3.x 迁移过来,还是打算在新项目中直接尝试 4.0?我可以为您提供针对性的迁移建议或代码示例。