Spring Boot 2.7.0 更新說明

fhadmin發表於2022-05-20

Spring Boot 又接連發布了三個版本:

  • Spring Boot 2.7.0(最新)
  • Spring Boot 2.6.8
  • Spring Boot 2.5.14

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

老規矩,棧長重點來解讀下 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 雖然現在被標識廢棄了,但現在仍然可以使用,後續可能被徹底刪除,建議使用新的規範。

java 專案 fhadmin.cn

新註解(@AutoConfiguration)

新增了一個自動配置註解   @AutoConfiguration,用來代替之前的   ,用於標識新自動配置註冊檔案中的頂級自動配置類,由   @AutoConfiguration  註解巢狀、匯入進來的其他配置類可以繼續使用    註解。

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

這個註解可以說更加細分了吧,自動配置專用註解,用專門的註解來幹專門的事,這樣也可以用來區分用   @Configuration  標識的普通配置類。

支援 GraphQL

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

Spring for GraphQL(1.0) 如今正式釋出了,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 的最新版本支援情況:

版本 釋出時間 停止維護時間 停止商業支援
2.7.0 2022-05-19 2023-05-18 2024-08-22
2.6.0 2021-12-17 2022-11-24 2024-02-24
2.5.x 2021-05-20 已停止 2023-08-24
2.4.x 2020-11-12 已停止 2023-02-23
2.3.x 2020-05-15 已停止 2022-08-20
2.2.x 2019-10-16 已停止 已停止
2.1.x 2018-10-10 已停止 已停止
2.0.x 2018-03-01 已停止 已停止
1.5.x 2017-01-30 已停止 已停止

大部分版本要麼停止維護,或者僅提供商業支援,隨著 2.7 的釋出,現在連 Spring Boot 2.5 也停止維護了:

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

總結

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

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


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31558068/viewspace-2895674/,如需轉載,請註明出處,否則將追究法律責任。

相關文章