Spring Boot 4.0 已经正式发布,本文旨在梳理 Spring Boot 4.0 的'新增与变化点',聚焦对工程落地有直接影响的内容。
一、重点特性升级
1. 平台基线升级:对齐 Spring Framework 7 与 Servlet 6.1 / Jakarta EE 11
Spring Boot 4.0 的首要变化是平台基线整体前移:
- Spring Framework 基线升级到 7.0.x
- Servlet 基线升级到 6.1(Jakarta EE 11)
- 内嵌容器主线对齐到 Tomcat 11 / Jetty 12.1(与 Servlet 6.1 匹配)
影响:
- 任何与
jakarta.*、Servlet API、容器适配相关的依赖,需要升级到兼容 Servlet 6.1 的版本线 - 自定义 Filter/Servlet、以及第三方组件(网关插件、监控探针、老旧 SDK)需要回归验证
2. Starter 结构调整:Web 服务器从'隐式默认'变成'显式可插拔'
Boot 4.0 对 Web 服务器 starter 做了结构性调整:
spring-boot-starter-web/spring-boot-starter-webflux不再隐式绑定某个服务器实现- 新增更清晰的容器 starter(按 Servlet / Reactive 维度区分):
spring-boot-starter-web-server-tomcatspring-boot-starter-web-server-jettyspring-boot-starter-reactive-web-server-tomcatspring-boot-starter-reactive-web-server-jetty
影响:
- 需要明确选择容器实现(Tomcat 或 Jetty),依赖图更清晰、更可控
- 对'平台统一容器版本'的团队更友好(便于强制收敛)
3. Undertow 移除:Servlet 6.1 兼容性导致的硬性变化
Boot 4.0 移除了 Undertow 的内嵌支持,原因是 Undertow 目前不支持 Servlet 6.1。
工程影响:
- 依赖 Undertow 的项目需要迁移到 Tomcat 或 Jetty
- 如果团队强依赖 Undertow(性能、特性、生态),需要评估自行维护适配链路的成本(通常不建议)
4. API Versioning:框架内建的版本治理能力
Boot 4.0 把 API 版本治理提升为框架能力(不再只是网关约定或自研技巧):
- 支持在 Spring MVC / WebFlux 中声明与解析版本
- 支持默认版本、版本解析器、版本格式解析、废弃策略处理等扩展点
4.1 Header 取版本(示例)
spring.mvc.apiversion.default=1.0.0
spring.mvc.apiversion.use.header=X-Version
4.2 Controller 上声明版本(示意)
具体注解/扩展点以 Spring Boot 4.0 最终 API 为准;实际项目建议统一版本策略(Header/Path/Query 选其一)。
List<UserDTO> {
}
List<UserDTO> {
}

