重磅!Spring Boot 2.7 正式發佈,一大波新特性,看完我徹底躺平了。。

Spring Boot 2.7 來了

大家好,我是棧長。

Spring Boot 2.6.0 發佈已經過去大半年了,現在 Spring Boot 2.7.0 如期而至:

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 雖然現在被標識廢棄了,但現在仍然可以使用,後續可能被徹底刪除,建議使用新的規範。

Spring Boot 基礎就不介紹了,推薦下這個實戰教程:

https://github.com/javastacks/spring-boot-best-practice

新註解(@AutoConfiguration)

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

另外,爲方便起見,@AutoConfiguration 註解還支持 after, afterNames, beforebeforeNames 屬性進行自動配置排序,用於代替之前的 @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 系統屬性,所以,獲取版本屬性時可能爲空。

單元測試加強

新增了 @DataCouchbaseTestDataElasticsearchTest 註解,可用於測試使用了 Spring Data Couchbase 和 Spring Data Elasticsearch 的應用程序。

其他更多

除了上面列出的更新之外,在其他方面都還有許多小的調整和改進,棧長這裏就不一一介紹了,感興趣的可以看下官方發佈說明:

https://spring.io/blog/2022/05/19/spring-boot-2-7-0-available-now


最新支持版本

棧長整理了 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 現在已經成爲了實事上的腳手架框架了,讓學習和開發變得更簡單,同時這版本的淘汰節奏也讓我感覺技術更新實在太快了,所以我們也要不斷保持學習,不然也會跟着淘汰。

如果你還沒用過 Spring Boot,今天我就送你一份 《Spring Boot 學習筆記》這個很全了,包括底層實現原理及代碼實戰,非常齊全,助你快速打通 Spring Boot 的各個環節。

往期 Spring Boot 教程及示例源碼整理:

https://github.com/javastacks/javastack

最後,你們用的哪個 Spring Boot 版本呢?

歡迎來投票統計看下!

好了,今天的分享就到這裏了,後面棧長會分享更多好玩的 Java 技術和最新的技術資訊,關注公衆號Java技術棧第一時間推送。

版權聲明: 本文系公衆號 "Java技術棧" 原創,原創實屬不易,轉載、引用本文內容請註明出處,抄襲者一律舉報+投訴,並保留追究其法律責任的權利。

近期熱文推薦:

1.1,000+ 道 Java面試題及答案整理(2022最新版)

2.勁爆!Java 協程要來了。。。

3.Spring Boot 2.x 教程,太全了!

4.別再寫滿屏的爆爆爆炸類了,試試裝飾器模式,這纔是優雅的方式!!

5.《Java開發手冊(嵩山版)》最新發布,速速下載!

覺得不錯,別忘了隨手點贊+轉發哦!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章