值得使用的Spring Boot_spring


值得使用的Spring Boot_客户端_02

Spring Boot 4.0 新特性全面解析:重大升級與現代化改造

Spring Boot 4.0 作為一次重大版本升級,帶來了眾多令人振奮的新特性和改進。本文將深入解析這些變化,幫助開發者更好地理解和適應這一重要更新。

🚀 Jackson 3 全面支持

Spring Boot 4.0 引入了對 Jackson 3 的完整支持,這是本次升級的核心特性之一:

核心改進

自動檢測機制:框架能夠自動發現並配置 Jackson 3 相關模塊
向後兼容:提供專門的 Jackson 2 模塊以簡化升級工作
配置優化:新增配置屬性實現與 Spring Boot 3 的 Jackson 2 默認配置最佳兼容

API 現代化

// 之前使用 ObjectMapper
ObjectMapper mapper = new ObjectMapper();

// 現在推薦使用 JsonMapper
JsonMapper mapper = JsonMapper.builder().build();

命名規範統一

將 Jackson 特定的 Json* 註解和類重命名為 Jackson*
SharedObjectMapper 重命名為 SharedJsonMapper
配置屬性調整:
spring.jackson.datetime. 移至 spring.jackson.datatype.datetime
重命名 JsonMapper 特定屬性,明確標識為 JSON 相關

🏗️ 模塊化重構

Spring Boot 4.0 進行了大規模的模塊化改造,提升了項目結構的清晰度:
模塊重命名與重組
spring-boot-tx → spring-boot-transaction
端點包結構合理化
Cloud Foundry 相關包重新組織
測試模塊實現完全模塊化

架構優化

RSocket 模塊不再依賴 spring-web
配置類命名統一:
RedisAutoConfiguration → DataRedisAutoConfiguration
spring-boot-starter-aop → spring-boot-starter-aspectj
所有類型排除過濾器改為 package-private

☕ Java 平台支持升級

版本支持
Java 25 支持:在 JavaVersion 枚舉中新增 TWENTY_FIVE
GraalVM 基線升級:最低要求提升至 25 版本

啓動器改進

// 支持無參數 main 方法
public static void main(String[] args) {
    SpringApplication.run(Application.class);
}

// 修復包私有 Main 類的構建問題
class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

🧪 測試增強

新特性引入
RestTestClient 支持:提供更現代化的測試客户端
TestRestTemplate 重定向行為更新:更符合實際生產環境
Spring-framework 升級到最新版本 7.0.0 時代
JUnit Jupiter 6.0:升級到最新版本 6.0.0 時代
新版spring-security-oauth2-authorization-server已經合併到spring-security下使用

@SpringBootTest
class MyApplicationTests {
    
    @Autowired
    private RestTestClient restTestClient;
    
    @Test
    void testEndpoint() {
        restTestClient.get()
            .uri("/api/endpoint")
            .exchange()
            .expectStatus().isOk();
    }
}

📊 數據格式和序列化

格式支持擴展
CBOR 支持:為 Jackson 的 CBOR 數據格式提供自動配置
JSON Schema 增強:改進 JSON Schema 相關功能

☁️ 雲平台擴展

平台支持調整
新增 AWS ECS 支持:擴展雲平台覆蓋範圍
移除 Bitnami 支持:簡化支持矩陣

🌐 HTTP 客户端配置優化

配置統一
HTTP 客户端配置屬性合理化
Jetty 客户端增強,支持配置 HttpClientTransport
客户端 API 版本控制不再從服務器配置推斷

💾 數據庫和持久化

驅動升級與優化
Neo4j 升級:要求 Neo4j Java Driver 6.0.0,使用 Neo4j Java Driver BOM
Redis SSL 配置:在 RedisConnectionDetails 中合理化 SSL bundle 配置
Elasticsearch 增強:提供配置屬性控制 sniffer 啓用/禁用
Liquibase Schema:使用 liquibaseSchema 替代 defaultSchema
可以替換 Undertow的spring-boot-starter-jetty

📨 消息隊列優化

配置改進
Spring AMQP 重試機制配置方式改進
RSocket 消息自動配置添加 @ControllerAdvice 支持

🔍 可觀測性增強

監控與追蹤
新增 @ObservationKeyValue 註解支持
指標和追蹤測試屬性重新審視
Devtools 默認將追蹤概率設置為 100%
使用 MicrometerTracing 配置 Lettuce

🛠️ 開發體驗改進

工具鏈優化
LiveReload 默認禁用:減少資源消耗
開發工具標記:允許將 jar 標記為開發工具以從 uber-jar 中排除
Maven 插件優化:默認排除可選依賴
CycloneDX Gradle Plugin:最低支持版本提升至 3.0.0

🗑️ 移除的功能

為了保持技術棧的現代化,Spring Boot 4.0 移除了以下過時功能:
主要移除項
Spring Pulsar Reactive:移除響應式支持
嵌入式 JAR 啓動腳本:移除支持
Spring Session 數據存儲:
移除 MongoDB 支持
移除 Hazelcast 支持
測試框架調整:
暫時移除 Spock(等待 Groovy 5 支持)
暫時移除 REST Docs 的 REST Assured 集成類移除
ConcurrentReferenceCachingMetadataReaderFactory:已移除
SQL 和 Reactor Starter:移除僅用於傳遞依賴的 starter

📦 重要依賴升級

Spring Boot 4.0 包含了眾多核心依賴的版本升級,確保與最新技術棧保持同步。

💡 升級建議

逐步遷移:先從非核心項目開始升級
測試覆蓋:確保有充分的測試覆蓋 before 和 after 升級
依賴檢查:檢查所有第三方依賴是否支持 Spring Boot 4.0
配置更新:按照官方遷移指南更新配置屬性
Spring Boot 4.0 這次重大升級為開發者帶來了更現代化、更高效的開發體驗,雖然需要一定的遷移成本,但長遠來看將為項目維護和性能提升帶來顯著收益。