Skip to main content

概述

2024年10月23日,Spring Boot 团队正式发布了 4.0.0-RC1 版本,这是 Spring Boot 4.0 系列的首个候选发布版本,标志着 Spring Boot 正式迈向下一个重要里程碑。此次发布包含了大量的新特性、重构和依赖升级,为开发者带来更现代化、更模块化的开发体验。

🌟 核心亮点

1. Jackson 3 全面支持

Spring Boot 4.0 引入了对 Jackson 3 的完整支持,这是一个重大升级:
  • 自动检测 Jackson 3 模块:框架能够自动发现并配置 Jackson 3 相关模块
  • Jackson 2 兼容模块:提供了专门的 Jackson 2 模块以简化升级工作
  • 配置属性优化:新增配置属性以实现与 Spring Boot 3 的 Jackson 2 默认配置最佳兼容
  • 类型重命名:将 Jackson 特定的 Json* 注解和类重命名为 Jackson*,使命名更加清晰
  • JsonMapper 优先:在可行的地方使用 JsonMapper 替代 ObjectMapper
  • SharedJsonMapper:将 SharedObjectMapper 重命名为 SharedJsonMapper
相关配置属性调整:
  • spring.jackson.datetime.<feature-name> 移至 spring.jackson.datatype.datetime
  • 重命名 JsonMapper 特定属性,明确标识为 JSON 相关

2. 模块化重构

Spring Boot 4.0 进行了大规模的模块化改造,提升了项目结构的清晰度:
  • spring-boot-tx 重命名spring-boot-tx 模块重命名为 spring-boot-transaction
  • 端点包重构:合理化 endpoint 相关包结构
  • Cloud Foundry 重构:重新组织 spring-boot-cloudfoundry 包结构
  • 测试模块模块化spring-boot-test-autoconfigure 实现模块化
  • RSocket 模块优化:明确 spring-boot-rsocket 不再依赖 spring-web
  • 配置类命名统一:将 *DataAutoConfiguration 重命名为 Data*AutoConfiguration
  • 类型过滤器调整:所有类型排除过滤器改为 package-private

3. Java 平台支持升级

  • Java 25 支持:在 JavaVersion 枚举中新增 TWENTY_FIVE
  • GraalVM 基线升级:将 GraalVM 最低要求提升至 25 版本
  • 无参数 main 方法支持:修复启动器无法找到无参数 main 方法的问题
  • 包私有 Main 类支持:修复 Java 25 中包私有 Main 类无法被构建插件找到的问题

4. 测试增强

  • RestTestClient 支持:新增对 RestTestClient 的支持
  • 重定向行为变更:更新 TestRestTemplate 的重定向行为
  • JUnit Jupiter 6.0:升级到 JUnit Jupiter 6.0.0

5. 数据格式和序列化

  • CBOR 支持:为 Jackson 的 CBOR 数据格式提供自动配置
  • JSON Schema 支持:增强 JSON Schema 相关功能

6. 云平台扩展

  • AWS ECS 支持:将 AWS ECS 添加到云平台支持列表
  • 移除 Bitnami 支持:不再支持 Bitnami

7. HTTP 客户端配置优化

  • 配置属性合理化:统一 HTTP 客户端配置属性
  • Jetty 客户端增强:在 JettyClientHttpConnectorBuilder 中支持配置 HttpClientTransport
  • API 版本控制:明确客户端的 API 版本控制不从服务器配置推断

8. 数据库和持久化

  • Neo4j 升级:要求 Neo4j Java Driver 6.0.0,并使用 Neo4j Java Driver BOM
  • SSL Bundle 配置:在 RedisConnectionDetails 中合理化 SSL bundle 配置
  • Elasticsearch Sniffer:提供配置属性以启用/禁用 Elasticsearch Client 的 sniffer
  • Liquibase Schema:使用 liquibaseSchema 替代 defaultSchema

9. 消息队列优化

  • Spring AMQP 重试配置:改进 Spring AMQP 重试机制的配置方式
  • RSocket 消息处理:为 RSocket 消息自动配置添加 @ControllerAdvice 支持

10. 可观测性增强

  • @ObservationKeyValue 支持:新增对 @ObservationKeyValue 注解的支持
  • 指标和追踪属性:重新审视指标和追踪测试属性
  • Devtools 追踪:配置 devtools 默认将追踪概率设置为 100%
  • MicrometerTracing:使用 MicrometerTracing 而非旧配置方式配置 Lettuce

11. 开发体验改进

  • LiveReload 默认禁用:LiveReload 服务器默认关闭
  • 开发工具标记:允许将 jar 标记为开发工具以从 uber-jar 中排除
  • Maven 插件优化:Maven 插件默认排除可选依赖
  • CycloneDX Gradle Plugin:将 CycloneDX Gradle Plugin 最低支持版本提升至 3.0.0

🗑️ 移除的功能

为了保持技术栈的现代化,Spring Boot 4.0 移除了一些过时的支持:
  1. RedisAutoConfiguration:移除 RedisAutoConfiguration
  2. Spring Pulsar Reactive:移除 Spring Pulsar Reactive 支持
  3. Undertow:Undertow 暂未适配 Spring Boot 4
  4. 嵌入式 JAR 启动脚本:移除对嵌入式 jar 启动脚本的支持
  5. Spring Session 数据存储
    • 移除 Spring Session Data MongoDB 支持
    • 移除 Spring Session Hazelcast 支持
  6. Spock:暂时移除 Spock,直到其支持 Groovy 5
  7. REST Assured:暂时移除 REST Docs 的 REST Assured 集成,直到 REST Assured 支持 Groovy 5
  8. ConcurrentReferenceCachingMetadataReaderFactory:移除此类
  9. SQL 和 Reactor Starter:移除这些 starter,因为它们仅用于传递依赖

📦 重要依赖升级

核心框架

  • Spring Framework 7.0.0-RC2
  • Spring Security 7.0.0-RC1
  • Spring Data BOM 2025.1.0-RC1
  • Spring Batch 6.0.0-RC1
  • Spring Integration 7.0.0-RC1

响应式和消息

  • Reactor BOM 2025.0.0-RC1
  • Spring AMQP 4.0.0-RC1
  • Spring Kafka 4.0.0-RC1
  • Spring Pulsar 2.0.0-RC1
  • Netty 4.2.7.Final

数据库驱动

  • Neo4j Java Driver 6.0.1
  • MongoDB 5.6.1
  • PostgreSQL 42.7.8
  • MSSQL JDBC 13.2.1.jre11
  • Jedis 7.0.0

序列化和数据格式

  • Jackson BOM 3.0.1

Web 容器

  • Tomcat 11.0.13
  • Jetty 12.1.3
  • Jetty Reactive HTTPClient 4.1.0

持久化和 ORM

  • Hibernate 7.1.4.Final
  • jOOQ 3.19.27
  • Liquibase 5.0.1
  • Flyway 11.14.1

可观测性

  • Micrometer 1.16.0-RC1
  • Micrometer Tracing 1.6.0-RC1
  • OpenTelemetry 1.55.0

测试

  • JUnit Jupiter 6.0.0
  • Mockito 5.20.0
  • AssertJ 3.27.6
  • Testcontainers 2.0.1
  • Selenium 4.37.0
  • HtmlUnit 4.17.0

语言和运行时

  • Kotlin 2.2.20
  • Groovy 5.0.2
  • Lombok 1.18.42

构建工具

  • Native Build Tools Plugin 0.11.2
  • Maven Compiler Plugin 3.14.1
  • Maven Javadoc Plugin 3.12.0

其他重要库

  • Elasticsearch Client 9.1.5
  • Cassandra Driver 4.19.1
  • ActiveMQ 6.1.8
  • Artemis 2.43.0
  • RabbitMQ AMQP Client 5.27.0
  • Log4j2 2.25.2
  • Logback 1.5.20

总结

Spring Boot 4.0.0-RC1 是一个重要的里程碑版本,它不仅带来了 Jackson 3 支持、模块化重构等重大改进,还为未来的发展奠定了坚实基础。通过移除过时功能、优化架构设计,Spring Boot 继续保持其作为 Java 企业级应用开发首选框架的地位。

社区反馈

  • 升级体验:多数用户反馈从 Spring Boot 3.x 升级到 4.0.0-RC1 的过程相对平滑,主要工作集中在 Jackson 3 的适配上
  • 性能提升:部分用户报告在启动速度和内存占用方面有所改善
  • 兼容性问题:少数第三方库可能存在兼容性问题,建议在升级前充分测试

升级建议

建议开发者采取以下步骤:
  1. 在测试环境中试用:先在非生产环境中进行充分测试
  2. 关注依赖兼容性:检查项目中使用的第三方库是否支持 Spring Boot 4.0
  3. 重点测试 Jackson 相关功能:如果项目大量使用 JSON 序列化/反序列化,需要重点关注
  4. 参与社区反馈:遇到问题及时向社区或官方反馈
更多详细信息,请访问 官方发布页面