
如果你维护着一个Spring Boot 3.x的项目现在是时候认真规划4.0升级了。Spring Boot 4.0标志着Java企业级开发的代际切换Spring Framework 7.0、Jakarta EE 11、Servlet 6.1、Tomcat 11、Jackson 3.x、Hibernate 7.1……几乎每一层核心依赖都完成了大版本跃迁。这不是一个小版本号的变更而是一次结构性换代。一、平台基线升级全面切换到下一代标准先看核心依赖的版本对照表——每一个数字变化背后都意味着API调整组件Boot 3.xBoot 4.0变化影响Spring Framework6.x7.0.x核心框架API调整Servlet / Jakarta EE6.0 / 106.1 / 11所有jakarta.*依赖需升级内嵌Tomcat10.x11.xServlet 6.1适配内嵌Jetty11.x12.1同步升级Jackson2.x3.xJSON序列化行为可能变化Hibernate6.x7.1ORM配置与方言调整Spring Data旧版2026查询API可能变化Spring Batch5.x6.0批处理配置调整重点警告所有与jakarta.*、Servlet API、容器适配相关的依赖必须升级到兼容Servlet 6.1的版本。如果你使用了第三方Servlet Filter或Listener需要确认其兼容性。二、Web生态大换血Undertow被移除这是4.0中最激进的变更——Undertow彻底从Spring Boot中移除原因是Undertow不支持Servlet 6.1。2.1 Starter结构调整Web服务器的绑定方式发生了根本变化!-- Boot 3.x隐式绑定 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId!-- 自动包含Tomcat --/dependency!-- Boot 4.0必须显式声明 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId!-- 不再自动包含任何服务器 --/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web-server-tomcat/artifactId/dependency!-- 或选择 Jetty --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web-server-jetty/artifactId/dependency如果你当前使用Undertow迁移步骤排除spring-boot-starter-undertow依赖添加spring-boot-starter-web-server-tomcat推荐或Jetty检查Undertow特有配置如server.undertow.*并替换为对应容器的配置重新测试WebSocket/SSE等长连接场景2.2 声明式HTTP Client——一等公民化4.0将声明式HTTP Client提升为框架级能力类似Spring Cloud OpenFeign但无需额外依赖// 定义HTTP服务接口HttpExchangepublicinterfaceBillingClient{GetExchange(/api/bills/{id})BillDTOgetBill(PathVariableLongid);PostExchange(/api/bills)BillDTOcreateBill(RequestBodyCreateBillRequestrequest);}# 配置base-url无需在注解中硬编码 spring.http.serviceclient.billing.base-urlhttps://billing.example.com// 启用服务客户端扫描SpringBootApplicationImportHttpServices(basePackagescom.example.clients)publicclassApplication{publicstaticvoidmain(String[]args){SpringApplication.run(Application.class,args);}}对团队的影响微服务间的HTTP调用有了统一的声明方式配合Spring Cloud的负载均衡和服务发现可以大幅简化服务间通信代码。三、API版本治理框架内建在大型微服务架构中API版本管理一直是个头疼的问题。Spring Boot 4.0将其提升为框架级能力# 全局默认版本 spring.mvc.apiversion.default1.0.0 # 使用Header传递版本号 spring.mvc.apiversion.use.headerX-VersionRestControllerRequestMapping(/users)publicclassUserController{GetMappingApiVersion(1.0.0)publicListUserDTOlistV1(){// 返回V1格式的用户数据}GetMappingApiVersion(2.0.0)publicListUserDTOV2listV2(){// 返回V2格式的用户数据包含扩展字段}}前端在Axios拦截器中统一添加版本Header即可axios.interceptors.request.use(config{config.headers[X-Version]1.0;returnconfig;});四、可观测性增强OpenTelemetry成标配4.0新增了spring-boot-starter-opentelemetry将分布式追踪标准化接入能力内置到框架中。dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-opentelemetry/artifactId/dependency这意味着不再需要手动引入各种OpenTelemetry依赖框架自动配置Exporter、采样策略、Resource属性与Spring Boot Actuator深度集成端到端可观测五、升级指南推荐的五步法不要直接从Boot 2.x跳到4.0——跨越太大风险不可控。推荐路径Boot 2.x → Boot 3.5.x中间过渡→ Boot 4.0五步升级法先升到Boot 3.5.x确保所有依赖在3.5.x上正常运行清理所有deprecated API避免升级后集中爆炸补齐测试与观测基线没有测试和指标数据无法判断升级收益重点回归验证容器/Servlet兼容性Undertow → Tomcat/JettyJSON序列化行为Jackson 3.x的日期格式、字段命名策略JPA/Hibernate配置与方言Actuator端点与安全策略灰度发布准备回滚预案按升级项目推进而非简单改版本号六、对不同角色的行动建议研发工程师立即在测试环境中创建Boot 4.0分支跑一遍集成测试重点关注Jackson 3.x对JSON序列化的影响如果使用Undertow优先制定迁移计划架构师/技术经理评估声明式HTTP Client对现有服务间通信方案的替代价值规划API版本治理的统一策略评估OpenTelemetry内置能力对现有可观测性架构的影响前端开发者Jackson 3.x升级可能导致后端返回的JSON结构变化日期格式、字段命名等在HTTP拦截器层做好适配WebSocket/SSE实现方式可能因容器更换而受影响个人观点Spring Boot 4.0的本质是一次清债行动——将积累多年的技术债务Servlet标准、容器绑定方式、API版本管理、可观测性接入统一清算。Undertow的移除虽然激进但也反映了社区对收敛选择、做深做透的决心。对于企业级项目我的建议是不要急但一定要开始准备——4.0的代际变化意味着生态迁移是趋势越早启动评估升级时的成本越低。