Java基础、中级、高级、架构面试资料

Spring Boot 4.0.5 紧急发布,修复配置漂移、Flyway 升级脚本无法加载等 bug

JAVA herman 11浏览
公告:“业余草”微信公众号提供免费CSDN下载服务(只下Java资源),关注业余草微信公众号,添加作者微信:xttblog2,发送下载链接帮助你免费下载!
本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
视频教程免费领
【腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云

Spring Boot 4.0.4 发布没多久呢,4.0.5 就发布了。这发布节奏快是快,bug 也是真的多呀。

4.0.4 版本的发布,一共修复了 18+ 的 bug。不到 2 周时间,Spring Boot 4.0.5 就正式发布了,这个版本的 bug 也不少,一共 17 项关键修复与依赖升级,建议有使用到的网友立即升级!

版本概览

2026 年 3 月 26 日,也就是昨天,Spring 官方正式发布了Spring Boot 4.0.5版本。这是一个维护版本(Maintenance Release),虽然未引入重大新特性,但包含了17 项重要的 Bug 修复、文档改进以及多项关键依赖升级。对于正在使用 Spring Boot 4.0.x 系列的生产环境,社区和官方都建议尽快安排升级。

文章配图参见我的公众号文章《https://mp.weixin.qq.com/s/LyNpS5iY61npm6XqJFaltw》。

核心 Bug 修复详解

本次修复的 Bug 涉及 WebSocket、测试框架、配置处理、GraphQL 以及 Native Image 等多个核心模块。下面是几个最值得关注的修复项

WebSocket 消息自动配置问题

这次发布的第一大看点,就是这个 WebSocket 消息任务执行器自动配置问题。该问题其实反映的有一段时间了,主要来自于两个 issues:#49753#49749

影响到的范围也比较广泛,尤其是使用 WebSocket + STOMP 协议的应用

在之前的版本中,WebSocket 消息的任务执行器(task executors)仅在检测到 Jackson 库存在时才会自动配置,且stompWebSocketHandlerMapping被强制设置为 eager 初始化。更严重的是,当 Jackson 在类路径中但不存在JsonMapper bean 时,应用会直接启动失败。

针对这个问题,官方团队做了以下方面的修复。

  • 解除了 WebSocket 任务执行器与 Jackson 的强耦合
  • 修复了缺少 JsonMapper bean 导致的启动失败
  • 优化了 stompWebSocketHandlerMapping 的初始化时机

因此,强烈建议使用到 WebSocket 的开发者务必升级,避免生产环境因 Jackson 配置等问题导致服务无法启动。

外部配置文件属性覆盖失效

这个问题来自于#49731 这个 issues。它影响到了使用多环境配置或外部配置的应用。

通过社区网友的反馈可知,这是一个配置优先级相关的严重 Bug。当在外部的 application.propertiesapplication.yaml 中定义的属性尝试覆盖内部配置时,覆盖操作被忽略,导致配置不生效。

典型重现场景是,外部配置文件不生效。

# 外部配置文件中设置
server.port: 8081
# 实际启动时仍使用内部配置的 8080

要知道,有不少应用踩了这个坑。所以,官方这次修复了配置属性覆盖的优先级逻辑,确保外部配置能够正确覆盖内部默认值。对于依赖外部化配置(如 Kubernetes ConfigMap、Docker 挂载配置)的微服务架构,此 Bug 可能导致配置漂移,建议立即升级。

Native Image 中 Flyway 脚本问题

#49706这个问题,会导致 Native Image 中 Flyway 迁移脚本无法加载。

影响所有使用 GraalVM Native Image + Flyway 数据库迁移的应用。

问题表现为,在构建 Native Image 时,NativeImageResourceProvider 无法发现位于子目录中的 Flyway 迁移脚本(如 db/migration/V1__init.sql),导致数据库迁移失败。

官方团队这次修复了资源提供者的路径扫描逻辑,支持递归查找子目录中的迁移脚本。

因此,对于采用 Serverless 架构(如 AWS Lambda、Azure Functions)或追求极致启动速度的云原生应用,这是一个相当关键的修复。

注解忽略问题

这个问题来自于#49738,主要原因是注解处理器忽略方法级 @NestedConfigurationProperty

影响范围包括使用构造函数绑定(Constructor Binding)+ 嵌套配置属性的应用。

当使用 @ConstructorBinding 进行配置属性绑定时,如果嵌套配置属性定义在方法级别(而非字段级别),元数据注解处理器会忽略这些属性,导致 IDE 自动补全和配置元数据生成不完整。

这次发布的版本修复了 spring-boot-configuration-processor 对方法级注解的处理逻辑。

测试框架问题修复

关于测试框架问题修复方面,官方这次一次性修复了 3 个。

文章配图参见我的公众号文章《https://mp.weixin.qq.com/s/LyNpS5iY61npm6XqJFaltw》。

  • Spring Integration 测试模块缺失(#49784)。问题表现为spring-boot-starter-test 未包含 Spring Integration 的测试模块,导致集成测试无法正常运行。
  • 切片测试事务配置不完整(#49782)。问题表现为部分切片测试(Sliced Tests)在导入 TransactionAutoConfiguration 时,未同时导入 TransactionManagerCustomizationAutoConfiguration,导致事务管理器自定义配置失效。
  • @GraphQlTest 缺少 @ControllerAdvice 支持(#49672)。问题表现为使用 @GraphQlTest 进行 GraphQL 控制器测试时,无法加载全局异常处理类(@ControllerAdvice),导致异常处理逻辑无法测试。

Netty 响应式优化

#49695是一个 Netty 响应式优化问题,这次优化了 Web 服务器配置条件。

修复内容为 NettyReactiveWebServerAutoConfiguration 添加了 @ConditionalOnWebApplication 注解,确保在非 Web 环境下不会错误地初始化 Netty 服务器。

依赖升级清单

文章配图参见我的公众号文章《https://mp.weixin.qq.com/s/LyNpS5iY61npm6XqJFaltw》。

Spring Boot 4.0.5 同步升级了多项核心依赖,提升安全性与性能。主要依赖如下面这个表格所示。

依赖项升级版本重要性
Tomcat11.0.20包含多个安全修复和性能优化
Netty4.2.12.Final修复网络层 Bug,提升稳定性
Jackson2.21.2JSON 处理性能优化
jOOQ3.19.31SQL 构建器更新
Brave6.3.1分布式追踪改进
Zipkin Reporter3.5.3链路追踪数据上报优化

升级注意事项

破坏性变更(Breaking Changes)

本次版本没有引入破坏性变更,从 4.0.x 升级可直接替换版本号即可。

推荐的升级步骤

文章配图参见我的公众号文章《https://mp.weixin.qq.com/s/LyNpS5iY61npm6XqJFaltw》。

Maven 用户更改配置。

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>4.0.5</version>
    <relativePath/>
</parent>

Gradle 用户参考下面这个配置。

plugins {
    id 'org.springframework.boot' version '4.0.5'
}

升级后验证清单

不出意外的话,都能轻松升级。但严谨起见,可以按照下面这个清单进行升级后验证。

  • WebSocket 连接与消息收发正常
  • 外部配置文件(如 ConfigMap 挂载)加载正确
  • Flyway 数据库迁移在 Native Image 模式下执行成功
  • 切片测试事务行为符合预期
  • GraphQL 测试用例通过

社区反馈与讨论

根据 GitHub 和社区讨论,下面这 3 个反馈我觉得很有意思,分享出来,大家看看。

  1. WebSocket 修复获好评:多位开发者反馈此前不得不通过显式配置 TaskExecutor 来绕过该问题,4.0.5 彻底解决了这一痛点。
  2. 配置覆盖问题影响面广:该 Bug 在微服务架构中影响较大,特别是使用 Spring Cloud Config 或 Kubernetes 配置管理的场景,社区呼吁尽快升级。
  3. Native Image 支持持续完善:随着 Spring Boot 4.x 对 GraalVM 的支持日益成熟,Flyway 修复进一步降低了云原生部署的门槛。

可以看到,老外网友对开源框架的 bug 修复,表现出完全不同于我们的态度。能动手绝对不动嘴。

总结

文章配图参见我的公众号文章《https://mp.weixin.qq.com/s/LyNpS5iY61npm6XqJFaltw》。

Spring Boot 4.0.5 是一个高优先级的维护版本,虽然没有 flashy 的新特性,但修复了多个影响生产稳定性的关键 Bug:

  • WebSocket 启动失败,影响消息应用
  • 配置覆盖失效,影响微服务配置管理
  • Native Image Flyway 支持,影响云原生部署
  • 测试框架完善,影响开发效率

最后,官方建议所有使用 4.0.x 版本的用户尽快升级至 4.0.5,特别是依赖 WebSocket、外部化配置或 GraalVM Native Image 的项目。

参考链接

  • Spring Boot 4.0.5 Release Notes: https://github.com/spring-projects/spring-boot/releases/tag/v4.0.5
  • Spring 官方博客公告: https://spring.io/blog/2026/03/26/spring-boot-4-0-5-available-now

业余草公众号

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

本文原文出处:业余草: » Spring Boot 4.0.5 紧急发布,修复配置漂移、Flyway 升级脚本无法加载等 bug