> ## Documentation Index
> Fetch the complete documentation index at: https://blog.pig4cloud.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Spring Boot 4.0.0-RC1 正式发布：迈向下一代 Spring Boot

> Spring Boot 4.0.0-RC1 版本正式发布，带来 Jackson 3 支持、模块化重构、Java 25 支持等重大更新，让我们一起了解这个重要里程碑版本的新特性。

## 概述

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. **参与社区反馈**：遇到问题及时向社区或官方反馈

更多详细信息，请访问 [官方发布页面](https://github.com/spring-projects/spring-boot/releases/tag/v4.0.0-RC1)。
