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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...