Spring Boot 4.2 的第一个里程 发布,弃用 RestTemplate

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 配置属性。
  • ApplicationHomeApplicationTemp 新增基于 Path 的访问方法。
  • 正式加入 AMQP 1.0 支持。
  • 新增通用 AMQP 1.0 客户端支持。
  • 新增 RabbitMQ AMQP 1.0 客户端及 RabbitMQ 专属功能。
  • spring-boot-amqp 重命名为 spring-boot-rabbitmq
  • 改进 spring-boot.run.useTestClasspathtarget/test-classes 的处理。

删除过期 API

  • EnvironmentPostProcessor
  • HttpMessageConverters
  • ZipkinWithOpenTelemetryTracingAutoConfiguration
  • DeprecatedMongoDbContainerConnectionDetailsFactory
  • DeprecatedNeo4jContainerConnectionDetailsFactory
  • DeprecatedPulsarContainerConnectionDetailsFactory
  • DeprecatedRabbitContainerConnectionDetailsFactory
  • DeprecatedMariaDbR2dbcContainerConnectionDetailsFactory
  • DeprecatedMySqlR2dbcContainerConnectionDetailsFactory
  • DeprecatedPostgresR2dbcContainerConnectionDetailsFactory
  • DeprecatedSqlServerR2dbcContainerConnectionDetailsFactory

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