Spring Boot 4.0 正式 GA,这是继 2.x → 3.x 引入 Jakarta 大迁移后,又一次真正意义上的“大版本升级”。 本篇文章基于官方 Spring Boot 4.0 Release Notes + Migration Guide,并结合实际开发经验,对 接口变化、配置项调整、新特性及潜在坑点 做一个全量梳理。
如果你正在从 Boot 3.x 升级,或准备启动新项目,这篇文章将帮你节省大量时间。
📌 目录
- 总体变化概览
- 关键依赖升级与基线要求
- 新特性与新接口详解
- Actuator / Observability 接口变更
- 配置属性变化(必读)
- Deprecated 与移除计划
- 迁移建议(从 3.x → 4.0 必看)
- 总结
总体变化概览
Spring Boot 4.0 的目标非常明确:
- 全面对齐 Spring Framework 7.0
- 进入 Jakarta EE 11 + Servlet 6.1 时代
- 拥抱 Jackson 3 / Hibernate 7 / Micrometer 1.16
- 开放更多自动配置能力(HTTP 客户端、API 版本控制)
- 统一 Observability(OpenTelemetry)
- 加强对现代 JVM 21+ / GraalVM 25+ 的支持
关键依赖升级与基线要求
☕ JDK
- 最低:Java 17
- 推荐:Java 21(当前 LTS)
🏛 Jakarta EE / Servlet
- Jakarta EE 11
- Servlet 6.1
🔧 Spring 全家桶
| 模块 | 新版本 |
|---|---|
| Spring Framework | 7.0 |
| Spring Security | 7.0 |
| Spring Data | 2025.1 |
| Spring Batch | 6.0 |
| Spring Integration | 7.0 |
| Spring Session | 4.0 |
| Spring Kafka | 4.1 |
| Spring AMQP | 4.0 |
📦 重要依赖升级
- Jackson 3.0
- Hibernate 7.1
- Micrometer 1.16
- Micrometer Tracing 1.6
- Tomcat 11.0
- Jetty 12.1
- MySQL Connector/J 9.5
新特性与新接口详解
🔥 1. HTTP Service Clients(声明式 HTTP 客户端)
@HttpExchange("https://api.example.com")
public interface EchoApi {
@PostExchange("/echo")
Map<String, Object> echo(@RequestBody Map<String, Object> msg);
}
特点:
- 类型安全的声明式 HTTP 调用
- 可部分替代 Feign
- 自动配置 RestClient/WebClient
🧭 2. API Versioning(API 版本控制)
spring.mvc.apiversion.enabled: true
spring.mvc.apiversion.parser: header
spring.mvc.apiversion.header: X-Version
自定义解析:
@Bean
public ApiVersionResolver customResolver() {
return exchange -> Optional.of("v2");
}
📡 3. OpenTelemetry Starter
自动配置:
- OTel SDK
- OTLP Exporter
- Micrometer Observation
📮 4. JMS:支持新版 JmsClient
新版 API 更现代,可组合性更强。
🧵 5. 多 TaskDecorator 支持
多个上下文透传逻辑可以独立实现。
🧬 6. Kotlin Serialization 自动配置
新增:
- spring-boot-kotlin-serialization
- spring-boot-starter-kotlin-serialization
🍃 7. MongoDB 变化
- Health 指标模块调整
- BigDecimal 表示方式可配置
🔥 8. Redis 主从(Master/Replica)静态配置
spring.data.redis.masterreplica.nodes: host1:6379,host2:6379
Actuator / Observability 接口变更
SSL 健康检查:
- 删除:
WILL_EXPIRE_SOON - 新增:
expiringChains字段
配置属性变化(必读)
| 旧属性 | 新属性 |
|---|---|
| management.tracing.enabled | management.tracing.export.enabled |
| spring.dao.exceptiontranslation.enabled | spring.persistence.exceptiontranslation.enabled |
Deprecated 与移除计划
- Jackson 2 整体废弃
- EnvironmentPostProcessor 包路径变更
- Actuator OperationMethod 构造器更新
迁移建议(从 3.x → 4.0 必看)
- 升级 JDK 至 17/21
- 校验 Jackson 3 兼容性
- 更新 Actuator 监控解析
- 替换路径变更的 SPI 接口
- 逐步采用 HTTP Service Clients
- 全局搜索配置 key 重命名
总结
Spring Boot 4.0 是一次面向未来的底座升级,覆盖:
- JDK 21 + Jakarta 11
- 声明式 HTTP 客户端
- API Versioning
- OTel Observability
- Jackson 3
- 更强自动配置
对于中大型项目,Boot 4.0 的价值非常高,可维护性和可观测性全面提升。