## Spring Boot 3.1 正式發佈 大家好,我是R哥。 上一篇:[Spring Boot 3.0 正式發佈,王炸!!](https://mp.weixin.qq.com/s/p-rDuyNv68hQvwRBrm5KWA) Spring Boot 3.0 發佈半年左右,Spring Boo ...
Spring Boot 3.1 正式發佈
大家好,我是R哥。
Spring Boot 3.0 發佈半年左右,Spring Boot 3.1 正式發佈了:
同時發佈更新的還有 2.7.x 版本,同時,R哥註意到 2.6.x 版本線已經停止維護了,最新支持版本如下圖所示:
2.7.x 這也是目前唯一正在維護的 2.x 版本線了,商業支持的版本也只有 2.5.x 了。
如果你還沒用過 Spring Boot,這裡推薦下R哥的《Spring Boot 3 核心技術與最佳實踐》最新書籍,包括底層實現原理及代碼實戰,知識點非常齊全,助你快速打通 Spring Boot 的各個環節。
Spring Boot 3.0 重大新特性
R哥看了下,Spring Boot 3.1 更新了不少內容,今天R哥就簡單分享下幾個重要的更新。
1、最低環境要求
Spring Boot 3.0 的發佈,其最低要求 Java 17,並向上相容支持 Java 19,Spring Boot 3.1 可以支持 Java 20 了,因為前段時間 Java 20 發佈了。
對 Java 開發環境的要求對比表:
Spring Boot | JDK | Spring | Maven | Gradle |
---|---|---|---|---|
3.1.0 | 17 ~ 20 | 6.0.9+ | 3.6.3+ | 7.5+,8.x |
3.0.0 | 17 ~ 19 | 6.0.2+ | 3.5+ | 7.5+ |
2.7.12 | 8 ~ 20 | 5.3.27+ | 3.5+ | 6.8.x, 6.9.x, 7.x, 8.x |
2、大量依賴升級
Spring Boot 3.1 最低支持的 Spring 框架也變成了 Spring 6.0.9+,除此之外,Spring Boot 管理的大量第三方的技術依賴也有大幅度的的升級,具體可以參考官方版本發佈文檔:
https://github.com/spring-projects/spring-boot/releases/tag/v3.1.0
以上這些技術的升級對於 Spring Boot 應用的升級也是一頭攔路虎。
3、移除 HttpClient 4
因為 Spring 6 刪除了 RestTemplate 對 Apache HttpClient 4 的支持,取而代之的則是 Apache HttpClient 5。
而 Spring Boot 3.0 又同時包含了 HttpClient 4 和 HttpClient 5 兩個依賴的管理,如果同時管理這兩個版本,有的人可能會繼續使用 HttpClient 4,應用程式在使用 RestTemplate 時可能會有潛在的錯誤,導致診斷困難。
所以,Spring Boot 3.1 移除了 HttpClient 4 的依賴管理,轉而逼迫用戶強制使用 HttpClient 5,大家有依賴 HttpClient 4 的升級時需要註意了。
4、Servlet 和 Filter 註冊失敗時拋異常
大家知道,Spring Boot 註冊 Servlet 和 Filter 時用的 ServletRegistrationBean 和 FilterRegistrationBean 這兩個類,之前註冊失敗時是記錄 warn 級別的日誌,現在則是直接拋出 IllegalStateException 異常。
如果不想註冊失敗拋出異常,還是想像以前一樣記錄 warn 警告日誌,可以調用這兩個類的 setIgnoreRegistrationFailure(true) 方法,即忽略註冊失敗,使用示例如下:
@Bean
public ServletRegistrationBean registerServlet() {
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new RegisterServlet(), "/registerServlet");
servletRegistrationBean.addInitParameter("type", "公眾號");
servletRegistrationBean.addInitParameter("name", "Java技術棧");
servletRegistrationBean.setIgnoreRegistrationFailure(true);
return servletRegistrationBean;
}
5、Spring Authorization Server 自動配置
Spring Boot 3.1 提供了一個 spring-boot-starter-oauth2-authorization-server 啟動器,可以支持 Spring Authorization Server 的自動配置,輕鬆配置基於 Servlet 的 OAuth2 授權伺服器。
更多參考官方文檔:
6、Docker Compose 新模塊
Docker Compose 是一個用於定義和運行多個 Docker 容器的工具,即官方容器編排工具,它可以輕鬆地定義多個容器之間的依賴關係、環境變數、網路設置等,並通過一個命令即可創建、啟動和連接這些容器。
Spring Boot 3.1 提供了一個新模塊:spring-boot-docker-compose,它支持與 Docker Compose 集成,當 Spring Boot 應用啟動時,它會在當前工作目錄中查找配置文件。
支持以下幾種配置文件:
- compose.yaml
- compose.yml
- docker-compose.yaml
- docker-compose.yml
更多參考官方文檔:
https://docs.spring.io/spring-boot/docs/3.1.0/reference/html/features.html#features.docker-compose
7、SSL 配置
Java KeyStore 和 PEM 編碼證書等 SSL 信任相關的資料,現在可以使用 properties 屬性進行配置,並且可以適用於各種類型的連接,例如嵌入式 Web 伺服器、數據服務、RestTemplate 和 WebClient。
更多參考官方文檔:
https://docs.spring.io/spring-boot/docs/3.1.0/reference/html/features.html#features.ssl
8、服務連接
Spring Boot 3.1 引入了一個新的服務連接概念,這是一個低級別的功能,旨在作為其他高級功能的構建塊,這些高級功能可以通過定義 ConnectionDetails Bean 自動配置服務連接。
ConnectionDetails Bean 提供了建立、刪除服務連接所需的詳細信息,並且 Spring Boot 的自動配置也已經支持,當這些 Bean 可用時,它們將優先於任何與連接相關的配置參數,但是,與連接本身無關的配置參數(比如:控制連接池大小和行為的參數)仍將使用。
Spring Boot 最新支持版本
R哥整理了 Spring Boot 的最新版本支持情況:
版本 | 發佈時間 | 停止維護時間 | 停止商業支持 |
---|---|---|---|
3.1.x | 2023-05-18 | 2024-05-18 | 2025-08-18 |
3.0.x | 2022-11-24 | 2023-11-24 | 2025-02-24 |
2.7.x | 2022-05-19 | 2023-11-18 | 2025-02-18 |
2.6.x | 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 | 已停止 | 已停止 |
2.2.x | 2019-10-16 | 已停止 | 已停止 |
2.1.x | 2018-10-10 | 已停止 | 已停止 |
2.0.x | 2018-03-01 | 已停止 | 已停止 |
1.5.x | 2017-01-30 | 已停止 | 已停止 |
話說你們用的哪個 Spring Boot 版本?
如果你還沒用過 Spring Boot,最後推薦下R哥的《Spring Boot 3 核心技術與最佳實踐》最新書籍,包括底層實現原理及代碼實戰,知識點非常齊全,助你快速打通 Spring Boot 的各個環節。
Spring Boot 最新最全的實戰代碼已上傳 Github:
好了,今天的分享就到這裡了,後續R哥也會繼續關註並分享更多的 Spring Boot 乾貨,關註公眾號Java技術棧第一時間推送。
版權聲明: 本文系公眾號 "Java技術棧" 原創,轉載、引用本文內容請註明出處,抄襲、洗稿一律投訴侵權,後果自負,並保留追究其法律責任的權利。
近期熱文推薦:
1.1,000+ 道 Java面試題及答案整理(2022最新版)
4.別再寫滿屏的爆爆爆炸類了,試試裝飾器模式,這才是優雅的方式!!
覺得不錯,別忘了隨手點贊+轉發哦!