本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
【腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云
有段时间没有给大家同步 Spring 生态方面的动态了,我看群里有小伙伴催我说 Spring Boot 做了更新。我到官网一看,果真如此,但是这个版本的更新,修的 bug 也太多了吧。
一次小版本发布竟然修了 30+ bug,感觉比我写的屎山代码都潦草呢。Spring Boot 现在的迭代不算快,距离 4.1.0 两个月的时间,小版本更新就是查漏补缺,小修小补。接下来我们一起来看看 Spring Boot 的这次 bug 修复之旅吧。
gRPC Gradle 插件行为调整
这是这个小版本发布中唯一需要开发者主动适配的变更。
在 4.1.0 中,Spring Boot 的 Gradle 插件会在检测到 com.google.protobuf 插件时,自动配置 gRPC 代码生成。这虽然方便了 gRPC 用户,却给仅使用 Protobuf 序列化、不需要 gRPC 的项目带来了麻烦。它会自动引入 gRPC 相关依赖和代码生成配置。
但是,从 4.1.1 开始,Gradle 插件不再自动配置 gRPC了。此时,如果你确实需要 gRPC 支持,则必须显式的声明。
protobuf {
plugins {
grpc {} // 空块即可触发自动配置
}
}
因此,如果升级 4.1.1 后,项目中用了 Protobuf 但没用 gRPC,升级后会更干净;如果用了 gRPC,记得补上上面的空块配置,否则代码生成会中断。
这里我想起了 AI 领域的一句话,不想学就不用学了,因为不到 6 个月就过期了。Spring Boot 也一样,不用尝鲜踩坑,等后面版本稳定一些后再落地到项目中。
30+ Bug 修复
4.1.1 版本修复了多达 30+ 个 Bug,下面列举几个对生产环境影响较大的吧。
文章配图参见公众号:https://mp.weixin.qq.com/s/v-u7Q7MSdLGxi_3Ih4phLQ。
日志编码失败污染后续日志
这个问题的表现是,当 JSON 结构化日志编码失败时,失败状态会“传染”给同一线程的下一个日志事件,导致后续日志格式错乱。
前提是使用了 logging.structured.format.console=json 配置的应用,在极端情况下会出现日志丢失或格式异常。
官方的修复方案是直接隔离了编码失败的状态,确保单条日志的失败不会影响后续事件。
Kafka 消费者安全协议配置失效
4.1.0 版本在使用 spring.kafka.consumer.security.protocol 等消费者级别的安全协议配置被忽略,实际使用的是全局配置。尤其是在多集群场景下,消费者无法独立配置 SASL/SSL 等安全协议。
修复方法就是将消费者特定配置现在被正确读取和应用。
虚拟线程与 Redis 不兼容
上篇文章我还在写“虚拟线程凉了”,其实是它面前有几堵墙。比如,生态以及数据库支持和 bug 问题等。
而 4.1.0 版本中,当 spring.threads.virtual.enabled=true 时,RedisMessageListenerContainer 仍然使用平台线程,没有享受到虚拟线程的轻量优势。
输入开了也白开,高并发 Redis 消息监听场景下,线程资源无法有效利用。
官方这次在新版本中加入了自动检测虚拟线程开关,正确配置监听容器。
MongoDB 健康检查导致连接数飙升
MongoDB 健康指示器每次检查都会创建新连接,在健康检查频繁时导致连接数暴涨。
尤其是在大规模部署的情况下更可能快速触达 MongoDB 连接上限。新版本中,官方直接复用已有连接进行健康检查。
@Validated + 通配符 Map 崩溃
该 bug 的表现是对包含 Map<String, ? extends SomeType> 的 @Validated 配置类进行属性绑定时,抛出 IllegalStateException。这也导致了一些复杂配置类的校验场景直接启动失败。
新版本,社区里直接正确处理通配符类型的属性绑定。
Cookie 的部分属性无法关闭
在使用 Cookie 的 Partitioned 属性时,即使显式设置 server.servlet.session.cookie.partitioned=false,响应中仍然会携带 Partitioned 属性。
这会导致 CHIPS (Cookies Having Independent Partitioned State) 相关测试和兼容性场景受阻。
老外发现问题后,社区里已经把 false 值被正确的使用了。
还有很多小 bug,就不一一展开了。下面是常规升级带来的一些依赖组件的升级。
核心依赖升级一览
4.1.1 同步升级了整个 Spring 生态的核心组件,确保各模块版本对齐。
| 依赖 | 升级至版本 |
|---|---|
| Spring Framework | 7.0.9 |
| Spring Security | 7.1.1 |
| Spring Data | 2026.0.1 |
| Spring Kafka | 4.1.1 |
| Spring gRPC | 1.1.1 |
| Hibernate | 7.4.5.Final |
| Jackson | 3.1.5 / 2.21.5 |
| Netty | 4.2.17.Final |
| Tomcat | 11.0.24 |
| Micrometer | 1.17.1 |
| Reactor | 2025.0.7 |
上面这些升级不仅带来了功能改进,更重要的是包含了各上游项目的安全修复。例如 Netty 4.2.17 和 Tomcat 11.0.24 都修复了近期披露的安全漏洞。
最后
Spring Boot 4.1.x 现在的使用率还不高,其中还是老外占据多数。而 4.1.x 只是一个小而精的补丁版本而已。它没有 flashy 的新功能,但社区用 30+ 个 Bug 修复和全面的依赖升级,证明了 Spring 团队对稳定性的持续投入。
现在整个 Java 生态的重心已经转移到 Agent 上了,Spring Boot 的升级与追捧已落后 AI 好几个数量级了。

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