本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
【腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云
上上周 Spring 正式发布了 7.0.6 版本,我当时还专门写了文章《https://mp.weixin.qq.com/s/z1xx57IuiLqL3UyjhYm-GQ》详细讲解了这个版本的变更,也预告了 Spring Boot 4.0.4 即将发布。
果不其然,上周五,Spring Boot 官方团队正式发布了 4.0.4 版本,这个版本带来了 18 个 Bug 修复、30+ 依赖升级、4 个重大变更、1 个即将废弃。所以,接下来,我就带领大家一起来看看 Spring Boot 4.0.4 这次发布迎来的关键修复与升级建议。
版本概览
正如大家所见,Spring Boot 4.0.4 是一次小版本变更。依旧是一个维护版本(Maintenance Release),主要包含重要的 Bug 修复、依赖升级和关键的安全、稳定性改进。对于正在使用 Spring Boot 4.x 的团队,非常建议尽快升级以获得更好的稳定性和安全性。
重要变更
文章配图参见https://mp.weixin.qq.com/s/YRcj9y4ytEtck3XNprJFCw。
通读整个发布清单可知,本次版本升级有四个关键变更需要特别注意。
下面,我们一一展开。
Zipkin 已被弃用
Spring Boot 4.0.4 版本正式标记ZipkinSpanExporter为弃用状态,将在4.2 版本中彻底移除。这点和最近发布的 Java 26 很像,正如我的这篇《https://mp.weixin.qq.com/s/zucWddfzu-bPtcHCqnQW3w》中所说,Spring Boot 也在向“永远向后兼容”告别。
OpenTelemetry 的废弃,所带来的影响是,使用 Zipkin 进行链路追踪的应用需要迁移到 OTLP 协议或寻找替代方案。更多细节参阅官方文档https://github.com/spring-projects/spring-boot/issues/49453。
Jackson 重大升级
- 由于 2.20.x 已停止维护。所以,Jackson 2 依赖升级至
2.21.1。 - 另外,3.0.x 也已停止维护了。所以,Jackson 3 依赖升级至 3.1.0。
这两个是社区讨论最热烈的变更。主要是 Jackson 3 带来了包名变更(com.fasterxml.jackson → tools.jackson)、更严格的类型处理、以及默认行为的改变(如属性按字母排序、日期默认序列化为 ISO-8601 字符串等)。更多细节内容,可以查看我过往发布的这篇文章《https://mp.weixin.qq.com/s/Kupj1lB6zIvuQzhasjcTFA》。
Tomcat 文件上传配置调整
server.tomcat.max-part-count这个配置项,默认值从10提升至50,与 Tomcat 官方默认值及 Spring Boot 3.x 保持了一致。
如果升级这个版本,大家要注意,处理多文件上传的应用可能受此配置保护,建议检查当前配置是否合理。
Java 26 支持
前面我也写文章说过,这次官方文档再次确认支持了Java 26,为已经发布的 JDK 26 做好了准备。
核心 Bug 修复详解
本次版本共修复18 个 Bug,其中以下 5 个对生产环境影响最大。
- 端点请求匹配器过于复杂(#49649)。
EndpointRequest针对健康检查分组的请求匹配器逻辑过于复杂,可能导致权限配置失效或性能下降。这个问题影响使用 Actuator 健康检查分组并进行安全管控的应用。这次官方团队简化了匹配器逻辑,提升性能和可预测性。 - Cloud Foundry 路径未限制在 Actuator 内(#49646)。主要问题表现在
/cloudfoundryapplication路径未被正确限制在 Actuator 范围内,可能暴露敏感端点。该问题影响部署在 Cloud Foundry 环境的应用存在潜在安全风险。官方修复方案是强制该路径仅在 Actuator 上下文中可用。 - Docker TCP 地址解析失败(#49596)。这个问题表现为,当 Docker 地址以斜杠结尾(如
tcp://docker:2375/)时,连接失败。它影响使用 Docker Compose 或远程 Docker 宿主的 CI/CD 流程。这次官方增强了地址解析的容错性。 - 配置导入顺序不一致(#49482)。该问题表现为,通过环境变量或系统属性定义的
spring.config.import加载顺序与配置文件中的定义不一致。影响依赖配置覆盖顺序的多环境部署可能出现意外行为。官方的修复方案是通过调整代码统一了配置加载顺序逻辑。 - OAuth2 授权服务器配置被覆盖(#49367)。这个 issues 表现的问题是,自动配置会覆盖通过
CustomizerBean 应用的授权服务器配置。影响自定义 OAuth2 授权服务器配置的应用无法生效。官方的修复方案是调整了配置优先级,尊重用户自定义配置。
其他值得关注的修复
整理了 5 条,如下表格所示。
| Bug ID | 问题描述 | 影响场景 |
|---|---|---|
#49593 | RSocket WebSocket 设置暴露重复端点 | 使用 RSocket 的应用 |
#49582 | 邮件发送器缺失的错误分析误导 | 邮件功能故障排查 |
#49344 | @AutoConfigureWebTestClient 导致超时配置失效 | WebTestClient 测试 |
#49343 | 强制使用 Log4J2 时抛出 NoSuchMethodException | 日志系统切换 |
#49176 | WAR 部署中 ErrorPageRegistrar 未自动配置 | 传统 WAR 部署 |
依赖升级清单
Spring Boot 4.0.4 升级了30+ 个核心依赖,主要包括以下核心依赖。
- Spring Framework: 7.0.6(关键 bug 修复)
- Spring Security: 7.0.4(安全补丁)
- Spring Data: 2025.1.4
- Hibernate: 7.2.7.Final
- Kafka: 4.1.2
- Micrometer: 1.16.4(可观测性改进)
- Testcontainers: 2.0.4(测试基础设施)
- Jetty: 12.1.7
- Liquibase: 5.0.2
建议立即升级的场景
总结了下面 4 条。
- 当前使用 Spring Boot 4.0.0-4.0.3
- 遇到上述特定 Bug(如 Docker 连接、OAuth2 配置问题)
- 需要 Java 26 支持
- 使用 Spring 7.0.5 版本的应用
暂缓升级的场景
- 重度依赖 Zipkin 且暂无法迁移到 OTLP
- 正在进行 Jackson 3 大规模迁移(建议先完成迁移再升级)
升级步骤
只需简单 5 部,即可完成替换升级。
- 修改
pom.xml或build.gradle版本号 - 检查 Jackson 相关代码兼容性
- 验证 Actuator 端点访问控制
- 在多文件上传场景测试 Tomcat 配置
- 运行全量集成测试
总的来说,Spring Boot 4.0.4 是一个稳定性优先的维护版本,修复了多个影响生产的关键 Bug。虽然 Jackson 升级带来一定迁移成本,但长期来看有利于技术栈的现代化。建议各位网友评估影响后尽快升级,确保应用安全性和稳定性。
参考资源
- Spring Boot 4.0.4 Release Notes
https://github.com/spring-projects/spring-boot/releases/tag/v4.0.4 - Spring Boot 4.0 迁移指南
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-4.0-Migration-Guide - Jackson 3 迁移指南
https://spring.io/blog/2025/10/07/introducing-jackson-3-support-in-spring

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号:xttblog2。备注:“1”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!
本文原文出处:业余草: » Spring Boot 4.0.4 发布,18+ bug、30+ 依赖升级、4 个重大变更、Zipkin即将废弃