Spring Boot 3.1 正式發佈,王炸!!

来源:https://www.cnblogs.com/javastack/archive/2023/05/23/17425074.html
-Advertisement-
Play Games

## 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.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 授權伺服器。

更多參考官方文檔:

https://docs.spring.io/spring-boot/docs/3.1.0/reference/html/web.html#web.security.oauth2.authorization-server

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:

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

好了,今天的分享就到這裡了,後續R哥也會繼續關註並分享更多的 Spring Boot 乾貨,關註公眾號Java技術棧第一時間推送。

版權聲明: 本文系公眾號 "Java技術棧" 原創,轉載、引用本文內容請註明出處,抄襲、洗稿一律投訴侵權,後果自負,並保留追究其法律責任的權利。

近期熱文推薦:

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

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

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

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

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

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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本系列前面講解了Spring的bean定義、bean實例化、bean初始化等生命周期階段。這些步驟使我們能夠瞭解bean從創建到準備好使用所經歷的過程。但是,除了這些步驟,bean的銷毀也是非常重要的一步。在本系列的最後,我們將深入探討bean的銷毀過程,包括在什麼情況下會發生銷毀、銷毀的順序以及如... ...
  • PHP 獲取無限級下級ID 無層級 非遞歸 刪除會員處有誤,修複後上傳記錄, PHP 獲取無限級下級ID 無層級 非遞歸 刪除會員處有誤,修複後上傳記錄, PHP 獲取無限級下級ID 無層級 非遞歸 刪除會員處有誤,修複後上傳記錄, PHP 獲取無限級下級ID 無層級 非遞歸 刪除會員處有誤,修複後 ...
  • # Java IO流 ## 什麼是流? 概念:記憶體和存儲設備之間傳輸數據的通道。 數據藉助流傳輸。 流分類: - 按照方向:輸入流(將存儲設備中的內容讀入到記憶體中)和輸出流(將記憶體中的內容寫入到存儲設備中) - 按照單位:位元組流(以位元組為單位,可以讀寫所有數據)和字元流(以字元為單位,只能讀取文本數 ...
  • 本文使用的是巴法雲 你也可以使用其他的物聯網平臺 並且 也不一定是小愛 比如小度啊 等等其他的一下應該也是可以實現的 調到java裡面之後 剩下的事情大家就可以想幹嘛就幹嘛了 ...
  • ## 一、安裝laradock ### 1. 如果有laravel項目並使用git,可以用git submodule將laradock克隆到laravel根目錄,方便後續管理 ```git submodule add https://github.com/laradock/laradock.git` ...
  • #### 錯誤: 找不到或無法載入主類 jar ##### 問題描述: 在使用springboot框架對項目打包後,手動使用命令java -jar 包名啟動jar包,報錯:錯誤: 找不到或無法載入主類 jar。 網上找了各辦法,都是加maven插件,打成可執行jar包 ``` org.springf ...
  • [TOC](Nett的概念及體繫結構) # 第一章 Java網路編程 最早期的 Java API(java.net)只支持由本地系統套接字型檔提供的所謂的阻塞函數,像下麵的那樣 ```java //創建一個新的 ServerSocket,用以監聽指定埠上的連接請求 ServerSocket serv ...
  • 在筆者上一篇文章`《驅動開發:內核MDL讀寫進程記憶體》`簡單介紹瞭如何通過MDL映射的方式實現進程讀寫操作,本章將通過如上案例實現遠程進程反彙編功能,此類功能也是ARK工具中最常見的功能之一,通常此類功能的實現分為兩部分,內核部分只負責讀寫位元組集,應用層部分則配合反彙編引擎對位元組集進行解碼,此處我們... ...
一周排行
    -Advertisement-
    Play Games
  • 在本篇教程中,我們學習瞭如何使用 Taurus.MVC WebMVC 框架創建一個簡單的頁面。 我們創建了一個控制器並編寫了一個用於呈現頁面的方法,然後創建了對應的視圖,並最終成功運行了應用程式。 在下一篇教程中,我們將繼續探索 Taurus.MVC WebMVC 框架的更多功能和用法。 ...
  • 一:背景 1. 講故事 很多.NET開發者在學習高級調試的時候,使用sos的命令輸出會發現這裡也看不懂那裡也看不懂,比如截圖中的這位朋友。 .NET高級調試屬於一個偏冷門的領域,國內可觀測的資料比較少,所以很多東西需要你自己去探究源代碼,然後用各種調試工具去驗證,相關源代碼如下: coreclr: ...
  • 我一直都以為c中除以2的n次方可以使用右移n位代替,然而在實際調試中發現並不都是這樣的。是在計算餘數是發現了異常 被除數:114325068 右移15計算結果:3488 除法取整計算結果:3489 右移操作計算餘數:33772 除法取整計算餘數:1005 顯然:這是不一樣的。 移位操作是一條cpu指 ...
  • 在上一篇文章中,我們介紹了ReentrantLock類的一些基本用法,今天我們重點來介紹一下ReentrantLock其它的常用方法,以便對ReentrantLock類的使用有更深入的理解。 ...
  • Excelize 是 Go 語言編寫的用於操作電子錶格辦公文檔的開源基礎庫,2024年2月26日,社區正式發佈了 2.8.1 版本,該版本包含了多項新增功能、錯誤修複和相容性提升優化。 ...
  • 雲採用框架(Cloud Adoption Framework,簡稱CAF)為企業上雲提供策略和技術的指導原則和最佳實踐,幫助企業上好雲、用好雲、管好雲,併成功實現業務目標。本雲採用框架是基於服務大量企業客戶的經驗總結,將企業雲採用分為四個階段,並詳細探討企業應在每個階段採取的業務和技術策略;同時,還 ...
  • 與TXT文本文件,PDF文件更加專業也更適合傳輸,常用於正式報告、簡歷、合同等場合。項目中如果有使用Java將TXT文本文件轉為PDF文件的需求,可以查看本文中介紹的免費實現方法。 免費Java PDF庫 本文介紹的方法需要用到Free Spire.PDF for Java,該免費庫支持多種操作、轉 ...
  • 指針和引用 當我們需要在程式中傳遞變數的地址時,可以使用指針或引用。它們都可以用來間接訪問變數,但它們之間有一些重要的區別。 指針是一個變數,它存儲另一個變數的地址。通過指針,我們可以訪問存儲在該地址中的變數。指針可以被重新分配,可以指向不同的變數,也可以為NULL。指針使用*運算符來訪問存儲在地址 ...
  • 即使再小再簡單的需求,作為研發開發完畢之後,我們可以直接上線麽?其實很多時候事故往往就是由於“不以為意”發生的。事故的發生往往也遵循“墨菲定律”,這就要求我們更要敬畏線上,再小的需求點都需要經過嚴格的測試驗證才能上線。 ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 一、是什麼 許可權是對特定資源的訪問許可,所謂許可權控制,也就是確保用戶只能訪問到被分配的資源 而前端許可權歸根結底是請求的發起權,請求的發起可能有下麵兩種形式觸發 頁面載入觸發 頁面上的按鈕點擊觸發 總的來說,所有的請求發起都觸發自前端路由或 ...