Spring Boot 3.4 正式登場,關(guān)鍵更新?lián)屜瓤矗?/h1>
隨著 Spring Boot 3.4 的正式發(fā)布,這個廣受歡迎的框架再次為開發(fā)者帶來了眾多令人興奮的功能更新和改進(jìn)。無論是在配置靈活性、開發(fā)體驗(yàn)、安全性,還是性能優(yōu)化方面,本次更新都值得關(guān)注。以下為您詳細(xì)解析 Spring Boot 3.4 的關(guān)鍵亮點(diǎn)及廢棄功能替代方案。
核心亮點(diǎn)詳解
配置與自定義能力增強(qiáng)
Liquibase 數(shù)據(jù)庫版本管理支持增強(qiáng)
Liquibase 是 Spring Boot 中廣泛使用的數(shù)據(jù)庫版本控制工具。3.4 新增了 Customizer<Liquibase> bean,允許開發(fā)者在 Liquibase 被使用前對其進(jìn)行自定義配置,進(jìn)一步提升了靈活性。
實(shí)際應(yīng)用: 在多數(shù)據(jù)源項(xiàng)目中,可以通過 Customizer<Liquibase> 為不同的數(shù)據(jù)源配置不同的策略,從而更高效地管理數(shù)據(jù)庫變更。
JCache 緩存配置靈活性提升
通過定義 JCachePropertiesCustomizer bean,可以動態(tài)修改 JCache 的 CacheManager 屬性。
適用場景: 在復(fù)雜緩存場景中,開發(fā)者可以動態(tài)調(diào)整緩存管理策略,而無需改動核心邏輯。
Redis Lettuce 客戶端高級定制
新增了 LettuceClientOptionsBuilderCustomizer,允許開發(fā)者細(xì)粒度地調(diào)整 Lettuce 客戶端選項(xiàng)。同時,繼續(xù)支持使用 LettuceClientConfigurationBuilderCustomizer 進(jìn)行整體配置。
改進(jìn)點(diǎn): 該功能適用于對 Redis 性能有較高要求的場景,例如大規(guī)模緩存管理和數(shù)據(jù)分布式鎖。
自定義 Spring MVC 的視圖名稱翻譯
定義一個名為 viewNameTranslator 的 bean,即可對 Spring MVC 的 RequestToViewNameTranslator 進(jìn)行自定義。
典型場景: 在國際化或復(fù)雜路由場景下,可通過該功能實(shí)現(xiàn)動態(tài)視圖名稱映射。
JavaMailSender 支持 TLS 配置
新增的 spring.mail.ssl.* 屬性支持通過 SSL 捆綁包配置 TLS 設(shè)置,進(jìn)一步提高郵件發(fā)送的安全性。
實(shí)際應(yīng)用: 對于需要發(fā)送敏感信息的企業(yè)應(yīng)用,開發(fā)者可以借助此功能保障郵件傳輸?shù)臋C(jī)密性。
安全性與監(jiān)控能力提升
安全事件審計(jì)
Spring Security 登出操作現(xiàn)在會觸發(fā)審計(jì)事件。通過監(jiān)聽這些事件,可以幫助企業(yè)更好地追蹤用戶行為,滿足合規(guī)性需求。
健康檢查自動化支持
在 Cloud Foundry 平臺上,健康檢查探針(Liveness 和 Readiness)將自動啟用。這一改進(jìn)使得 Kubernetes 環(huán)境中的部署和監(jiān)控變得更加簡單高效。
健康檢查路徑映射改進(jìn)
默認(rèn)的安全配置支持通過 EndpointRequest 類將健康檢查組映射到額外路徑,同時新增了 toAdditionalPaths(…) 方法。
適用場景: 當(dāng)應(yīng)用的健康檢查需要被多系統(tǒng)同時訪問時,可以輕松通過額外路徑完成多點(diǎn)探測。
SSL 健康檢查支持
通過 /actuator/info 端點(diǎn),開發(fā)者可以輕松查看 SSL 證書的有效期、頒發(fā)者等信息。如果證書即將到期,還會觸發(fā)警告,幫助管理員提前處理。
場景優(yōu)化: 金融、電商等對安全性要求高的領(lǐng)域,開發(fā)者可以借助該功能監(jiān)控 SSL 狀態(tài),避免因證書過期導(dǎo)致服務(wù)中斷。
日志與性能改進(jìn)
支持結(jié)構(gòu)化日志輸出
Spring Boot 3.4 引入了對 Elastic Common Schema(ECS)、Graylog Extended Log Format(GELF)和 Logstash 格式的支持,開發(fā)者可通過以下屬性實(shí)現(xiàn)結(jié)構(gòu)化日志輸出:
- logging.structured.format.file:設(shè)置文件日志格式。
- logging.structured.format.console:設(shè)置控制臺日志格式。
實(shí)際應(yīng)用: 在微服務(wù)架構(gòu)中,結(jié)構(gòu)化日志便于統(tǒng)一收集和分析,為快速定位問題提供了基礎(chǔ)。
支持 gRPC 傳輸日志
OTLP 日志傳輸新增了對 gRPC 的支持,提升了分布式系統(tǒng)的日志傳輸性能。
性能對比: 相比傳統(tǒng)的 HTTP 傳輸方式,gRPC 通過其高效的二進(jìn)制協(xié)議,能夠顯著減少延遲并提升吞吐量。
默認(rèn)日志增強(qiáng)
Log4j2 的 MultiFormatStringBuilderFormattable 已支持結(jié)構(gòu)化日志,日志分析和追蹤更為方便。
開發(fā)體驗(yàn)優(yōu)化
更簡化的版本管理
通過 spring.application.version 屬性,可以輕松從 manifest 的 Implementation-Version獲取應(yīng)用版本,無需手動管理。
JSON 解析支持嚴(yán)格模式
新增的 spring.gson.strictness 屬性允許更嚴(yán)格地控制 JSON 解析器的行為,避免寬松解析帶來的潛在問題。
性能優(yōu)化
支持虛擬線程
如果虛擬線程功能被啟用,Spring Boot 3.4 會在 Undertow Web 服務(wù)器和 OtlpMeterRegistry中使用虛擬線程,提升了性能。
未來趨勢: 隨著 Java 虛擬線程的成熟,該功能可能成為高并發(fā)場景中的標(biāo)配。
廢棄功能與替代方案
Spring Boot 3.4 對部分功能進(jìn)行了廢棄,同時提供了推薦替代方案。以下是部分重要廢棄項(xiàng)及其替代:
廢棄功能 | 替代方案 |
和 | Spring Framework 的 |
|
|
|
|
on |
|
開發(fā)者在升級到 3.4 時,應(yīng)檢查代碼中是否使用了這些功能,并盡早遷移到新方法。
總結(jié)
Spring Boot 3.4 帶來了豐富的功能改進(jìn)和增強(qiáng),從開發(fā)體驗(yàn)的優(yōu)化到生產(chǎn)環(huán)境的性能提升,每一項(xiàng)更新都為開發(fā)者提供了更多的可能性。對于微服務(wù)、分布式系統(tǒng)和企業(yè)級應(yīng)用,這些新特性將顯著提高開發(fā)效率和系統(tǒng)可靠性。
行動建議:
- 盡快在測試環(huán)境中嘗試 Spring Boot 3.4 的新功能。
- 結(jié)合自身項(xiàng)目場景,評估功能更新和廢棄項(xiàng)的影響,做好升級計(jì)劃。
- 針對結(jié)構(gòu)化日志、健康檢查等功能,引入對應(yīng)工具,充分發(fā)揮其潛力。