Spring Boot 4.2.0-M1 是 Spring Boot 4.2 系列的第一个里程碑版本,属于预发布版本,并非正式 GA 版本,目前可以从 Maven Central 获取。
该版本包含多个破坏性功能增强、依赖升级和缺陷修复。
新特性
- 改进 Jetty 服务器的转发请求头配置。
- 测试环境默认禁用 Micrometer 全局 Registry,减少测试上下文被全局状态影响的问题。
- Jetty 优雅停机改用
GracefulHandler协调,不再使用StatisticsHandler。 - 将 Spring Boot 对
RestTemplate的相关支持标记为弃用。 - 将
TestRestTemplate标记为弃用,推荐改用RestTestClient。 - 调整转发请求头相关配置,以适配 Reactor Netty 和 Spring Framework 的变化。
- 删除计划在 Spring Boot 4.2 中移除的过时 API,具体迁移方式见下文。
- Buildpacks 新增基于镜像的构建缓存支持。
- 为
hibernate-maven-plugin提供插件版本管理。 RetryPolicySettings新增超时配置。ApplicationContextAssertProvider新增返回自身的引用。- Kafka Streams 新增
leaveGroupOnClose配置属性。 ApplicationHome和ApplicationTemp新增基于Path的访问方法。- 正式加入 AMQP 1.0 支持。
- 新增通用 AMQP 1.0 客户端支持。
- 新增 RabbitMQ AMQP 1.0 客户端及 RabbitMQ 专属功能。
spring-boot-amqp重命名为spring-boot-rabbitmq。- 改进
spring-boot.run.useTestClasspath对target/test-classes的处理。
删除过期 API
EnvironmentPostProcessorHttpMessageConvertersZipkinWithOpenTelemetryTracingAutoConfigurationDeprecatedMongoDbContainerConnectionDetailsFactoryDeprecatedNeo4jContainerConnectionDetailsFactoryDeprecatedPulsarContainerConnectionDetailsFactoryDeprecatedRabbitContainerConnectionDetailsFactoryDeprecatedMariaDbR2dbcContainerConnectionDetailsFactoryDeprecatedMySqlR2dbcContainerConnectionDetailsFactoryDeprecatedPostgresR2dbcContainerConnectionDetailsFactoryDeprecatedSqlServerR2dbcContainerConnectionDetailsFactory
RestTemplate 应该如何迁移
RestTemplate 的直接替代品是 RestClient。两者都是同步、阻塞式 HTTP 客户端,因此已有的传统 Spring MVC 项目没有必要为了这次弃用强行改成响应式编程。
具体可以参考笔者之前写的相关的文章
缺陷修复
- 修复结构化日志在 JSON 编码失败后,可能污染同一线程下一条日志的问题。
- 修复 Kafka 消费者专属安全协议配置未生效的问题。
- 未引入 gRPC 时,不再错误暴露 gRPC 测试服务器端口。
- 修复 Micrometer Registry 持有应用上下文、导致上下文无法释放的问题。
- 修复导出镜像 TAR 文件构建失败后临时文件未删除的问题。
- 修复
spring.grpc.server.health.include-overall-health配置不生效的问题。 - 修复配置元数据处理器忽略 record getter 上
@NestedConfigurationProperty的问题。 - 修复
spring-boot-h2-console错误传递引入 Servlet API 的问题。 - 修复
PropertiesLauncher未记录嵌套归档路径的问题。 - 修正部分
Map#remove返回方法缺少@Nullable声明的问题。 - 修复 Native Image 环境下 Flyway 子目录迁移路径被扁平化的问题。
- 修复 Kotlinx Serialization 的
CodecCustomizer排序问题。 - 修复从归档文件查找主类时
JarFile未关闭的问题。
依赖升级
- Hibernate ORM 7.4.5.Final
- Hibernate Validator 9.1.3.Final
- Jackson 3.1.5、Jackson 2.21.5
- Kafka 4.3.1
- Kotlin 2.4.10
- JUnit Jupiter 6.1.3
- Jetty 12.1.12
- Tomcat 11.0.24
- Netty 4.2.17.Final
- Flyway 12.11.0
- Elasticsearch Client 9.5.0
- Jedis 8.0.0
- Lettuce 7.6.0.RELEASE
- HikariCP 7.1.0
- Log4j 2.26.1
- Logback 1.6.1
- OpenTelemetry 1.64.0
- gRPC Java 1.83.1
- Gson 2.14.0
- PostgreSQL JDBC 42.7.13
- Pulsar 4.2.4