Spring Boot 2.7.0 更新說明

Spring Boot 又接連發(fā)布了三個版本:

Spring Boot 2.7.0(最新)

Spring Boot 2.6.8

Spring Boot 2.5.14

后面兩個版本都是修復 bug 版本,2.7.0 才是硬菜,畢竟等了大半年。。

老規(guī)矩,棧長重點來解讀下 Spring Boot 2.7.0 都更新了什么鬼!

Spring Boot 2.7 新特性

自動配置變更(重要)

自動配置注冊文件

自動配置注冊有了一個比較大的調整,之前都是寫在下面 文件中的:

META-INF/spring.factories

現在改名了:

META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

另外格式也變了,Spring Boot 2.7 中直接每一行是一個自動配置類:

編寫格式確實是比之前方便多了,但文件名確實也太長了,比較難記。。。

需要注意的是:

為了向后兼容,META-INF/spring.factories 雖然現在被標識廢棄了,但現在仍然可以使用,后續(xù)可能被徹底刪除,建議使用新的規(guī)范。

java 項目 fhadmin.cn

新注解(@AutoConfiguration)

新增了一個自動配置注解?@AutoConfiguration,用來代替之前的?@Configuration,用于標識新自動配置注冊文件中的頂級自動配置類,由?@AutoConfiguration?注解嵌套、導入進來的其他配置類可以繼續(xù)使用?@Configuration?注解。

另外,為方便起見,@AutoConfiguration?注解還支持?after,?afterNames,?before?和?beforeNames?屬性進行自動配置排序,用于代替之前的?@AutoConfigureAfter?和?@AutoConfigureBefore?注解。

這個注解可以說更加細分了吧,自動配置專用注解,用專門的注解來干專門的事,這樣也可以用來區(qū)分用?@Configuration?標識的普通配置類。

支持 GraphQL

GraphQL = Graph + QL(Query Language),它是一種用于 API 的基于圖表化的查詢語言:

Spring for GraphQL(1.0) 如今正式發(fā)布了,Spring Boot 2.7.0 也集成了對 GraphQL 的自動配置、指標支持等,Starter 名為:spring-boot-starter-graphql,Spring 大家族又新增一員。

支持 Podman

Podman 和 Docker 一樣,是現在比較火熱的容器引擎。

現在使用 Cloud Native Buildpacks 構建映像時,Maven 和 Gradle 插件就可以使用 Podman 容器引擎進行構建了,可用來代替 Docker 容器引擎。

牛逼啊,Podman 現在被 Spring Boot 官方支持了。

支持 RabbitStreamTemplate

現在支持自動配置 RabbitStreamTemplate,只需要配置以下參數:

spring.rabbitmq.stream.name= xxx

同時還新增了一個?RabbitStreamTemplateConfigurer?配置類來進行自定義擴展其他實例。

支持 Hazelcast

Hazelcast 和 Redis 一樣,它是一款開源的分布式內存數據庫,可用作分布式緩存。

Hazelcast 自動配置嵌入式服務器現在默認使用了?SpringManagerContext,可以在 Hazelcast 實例對象中注入 Spring Bean 了。另外,還引入了?HazelcastConfigCustomizer?回調接口,可用于進一步調整 Hazelcast 服務器配置。

支持 Cache2k

Cache2k 是一個開源的輕量級、高性能 Java 內存緩存庫。

現在添加了?Cache2k?的依賴項管理和自動配置,也可以通過定義一個?Cache2kBuilderCustomizer??實例 Bean 來自定義默認緩存設置。

Web Server SSL 增強

嵌入式 Web 服務器 SSL 配置增強了,可以配置帶有 PEM 編碼證書和私鑰文件的 SSL。

使用以下參數進行配置:

server.ssl.certificate

server.ssl.certificate-private-key

server.ssl.trust-certificate(可選)

server.ssl.trust-certificate-private-key(可選)

另外,也可以使用類似的?management.server.ssl.*?屬性來保護管理端點。

info 端點增強

操作系統信息

現在?/info?端點支持暴露應用程序運行時的一些操作系統信息:

{"os":{"name":"Linux","version":"5.4.0-1051-gke","arch":"amd64"}}

不過默認是禁用的,有需要的可以手動開啟:

management.info.os.enabled=true

Java 供應商信息

現在?/info?端點中的 Java 供應商添加了供應商版本信息:

{"java":{"vendor":{"name":"Eclipse Adoptium","version":"Temurin-17.0.1+12"},"..."}

需要注意的是:?并非所有供應商都公開?java.vendor.version?系統屬性,所以,獲取版本屬性時可能為空。

單元測試加強

新增了?@DataCouchbaseTest?和?DataElasticsearchTest?注解,可用于測試使用了 Spring Data Couchbase 和 Spring Data Elasticsearch 的應用程序。


最新支持版本

棧長整理了 Spring Boot 的最新版本支持情況:

版本發(fā)布時間停止維護時間停止商業(yè)支持

2.7.02022-05-192023-05-182024-08-22

2.6.02021-12-172022-11-242024-02-24

2.5.x2021-05-20已停止2023-08-24

2.4.x2020-11-12已停止2023-02-23

2.3.x2020-05-15已停止2022-08-20

2.2.x2019-10-16已停止已停止

2.1.x2018-10-10已停止已停止

2.0.x2018-03-01已停止已停止

1.5.x2017-01-30已停止已停止

大部分版本要么停止維護,或者僅提供商業(yè)支持,隨著 2.7 的發(fā)布,現在連 Spring Boot 2.5 也停止維護了:

能用的也就 Spring Boot 2.6 及以上的版本了,并且,Spring Boot 2.6.0 在今年 11/24 也會停止維護。。

總結

Spring Boot 2.7.0 新增了不少新特性,變化真的還挺大的,特別是自動配置的變更,有明顯調整,大家要特別注意。

Spring Boot 現在已經成為了實事上的腳手架框架了,讓學習和開發(fā)變得更簡單,同時這版本的淘汰節(jié)奏也讓我感覺技術更新實在太快了,所以我們也要不斷保持學習,不然也會跟著淘汰。

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容