Spring Boot 4.0 简介
Spring Boot 4.0 是 Spring Boot 框架的最新主要版本,于 2025 年 11 月正式发布。该版本带来了许多新特性和改进,同时对底层技术栈进行了重大升级。
主要特性
1. Java 和 JVM 支持
Spring Boot 4.0 要求最低 JDK 版本为 17(LTS 版本),并推荐使用 JDK 25(2025 年 9 月发布的版本)。这一变化确保了框架能够利用最新的 Java 特性和性能改进。
2. Jakarta EE 11 对齐
Spring Boot 4.0 完全迁移到 Jakarta EE 11,这意味着所有 javax.* 包都已更改为 jakarta.* 包。这是与之前版本的重大不兼容改动之一。
3. HTTP Service Clients
Spring Boot 4.0 引入了 HTTP Service Clients 功能,允许开发者通过注解普通 Java 接口来创建 HTTP 客户端:
1 |
|
4. API 版本控制
新增了对 API 版本控制的自动配置支持,可以通过配置属性来启用:
1 | spring: |
5. 虚拟线程支持
Spring Boot 4.0 原生支持 Java 的虚拟线程(Virtual Threads),可以显著提高并发性能:
1 | spring: |
6. OpenTelemetry Starter
新增了 spring-boot-starter-opentelemetry starter,简化了分布式追踪和指标收集的配置:
1 | <dependency> |
7. Kotlin 序列化支持
新增了对 Kotlin Serialization 的支持,提供了 spring-boot-starter-kotlin-serialization starter。
8. MongoDB 健康指标改进
MongoDB 健康指标不再依赖 Spring Data MongoDB,可以直接使用 MongoDB Java Driver。
不兼容的改动
1. 包名迁移
所有 javax.* 包已迁移到 jakarta.*:
1 | // 旧版本 |
2. Undertow 支持移除
由于 Undertow 尚未兼容 Servlet 6.1,Spring Boot 4.0 移除了对 Undertow 的支持。
3. 配置属性变更
多个配置属性名称发生了变更:
1 | # 旧版本 |
4. SSL 健康检查变更
SSL 健康检查的响应格式发生了变化,WILL_EXPIRE_SOON 状态已被移除。
升级步骤
1. 准备工作
在升级到 Spring Boot 4.0 之前,建议先升级到 Spring Boot 3.5:
1 | <parent> |
2. 更新依赖版本
将 Spring Boot 版本更新为 4.0.0:
1 | <parent> |
3. 包名迁移
使用 IDE 的重构功能将所有 javax.* 包引用更新为 jakarta.*:
1 | # 在项目中查找所有 javax 包引用 |
4. 配置属性更新
检查并更新 application.yml 或 application.properties 中的配置属性:
1 | # 更新配置属性 |
5. 移除 Undertow 依赖
如果项目中使用了 Undertow,需要移除相关依赖并切换到其他 Web 服务器:
1 | <!-- 移除 Undertow 依赖 --> |
6. 更新 MongoDB 配置
如果使用了 MongoDB,更新相关配置:
1 | # 更新 MongoDB 配置属性 |
7. 测试和验证
完成所有升级步骤后,进行全面的测试:
1 | # 运行单元测试 |
依赖升级
Spring Boot 4.0 升级了大量第三方依赖:
- Spring Framework 7.0
- Micrometer 1.16
- Reactor 2025.0
- Hibernate 7.1
- Jackson 3.0
- Tomcat 11.0
- Jetty 12.1
性能改进
1. 虚拟线程优化
通过启用虚拟线程可以显著提高应用的并发处理能力:
1 |
|
2. 启动优化
Spring Boot 4.0 在应用启动时间方面进行了优化,特别是在使用 GraalVM Native Image 时。
总结
Spring Boot 4.0 带来了许多令人兴奋的新特性和改进,包括对最新 Java 版本的支持、Jakarta EE 11 对齐、HTTP Service Clients、API 版本控制等。虽然升级过程中需要处理一些不兼容的改动,但这些改进将为应用带来更好的性能和更现代化的技术栈。
升级到 Spring Boot 4.0 的主要步骤包括:
- 先升级到 Spring Boot 3.5
- 更新依赖版本到 4.0.0
- 迁移 javax 包到 jakarta 包
- 更新配置属性
- 移除 Undertow 依赖(如使用)
- 全面测试验证
通过遵循这些步骤,您可以顺利将现有应用升级到 Spring Boot 4.0,并享受新版本带来的各种优势。