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
  • 最近做項目過程中,使用到了海康相機,官方只提供了C/C++的SDK,沒有搜尋到一個合適的封裝了的C#庫,故自己動手,簡單的封裝了一下,方便大家也方便自己使用和二次開發 ...
  • 前言 MediatR 是 .NET 下的一個實現消息傳遞的庫,輕量級、簡潔高效,用於實現進程內的消息傳遞機制。它基於中介者設計模式,支持請求/響應、命令、查詢、通知和事件等多種消息傳遞模式。通過泛型支持,MediatR 可以智能地調度不同類型的消息,非常適合用於領域事件處理。 在本文中,將通過一個簡 ...
  • 前言 今天給大家推薦一個超實用的開源項目《.NET 7 + Vue 許可權管理系統 小白快速上手》,DncZeus的願景就是做一個.NET 領域小白也能上手的簡易、通用的後臺許可權管理模板系統基礎框架。 不管你是技術小白還是技術大佬或者是不懂前端Vue 的新手,這個項目可以快速上手讓我們從0到1,搭建自 ...
  • 第1章:WPF概述 本章目標 瞭解Windows圖形演化 瞭解WPF高級API 瞭解解析度無關性概念 瞭解WPF體繫結構 瞭解WPF 4.5 WPF概述 ​ 歡迎使用 Windows Presentation Foundation (WPF) 桌面指南,這是一個與解析度無關的 UI 框架,使用基於矢 ...
  • 在日常開發中,並不是所有的功能都是用戶可見的,還在一些背後默默支持的程式,這些程式通常以服務的形式出現,統稱為輔助角色服務。今天以一個簡單的小例子,簡述基於.NET開發輔助角色服務的相關內容,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 第3章:佈局 本章目標 理解佈局的原則 理解佈局的過程 理解佈局的容器 掌握各類佈局容器的運用 理解 WPF 中的佈局 WPF 佈局原則 ​ WPF 視窗只能包含單個元素。為在WPF 視窗中放置多個元素並創建更貼近實用的用戶男面,需要在視窗上放置一個容器,然後在這個容器中添加其他元素。造成這一限制的 ...
  • 前言 在平時項目開發中,定時任務調度是一項重要的功能,廣泛應用於後臺作業、計劃任務和自動化腳本等模塊。 FreeScheduler 是一款輕量級且功能強大的定時任務調度庫,它支持臨時的延時任務和重覆迴圈任務(可持久化),能夠按秒、每天/每周/每月固定時間或自定義間隔執行(CRON 表達式)。 此外 ...
  • 目錄Blazor 組件基礎路由導航參數組件參數路由參數生命周期事件狀態更改組件事件 Blazor 組件 基礎 新建一個項目命名為 MyComponents ,項目模板的交互類型選 Auto ,其它保持預設選項: 客戶端組件 (Auto/WebAssembly): 最終解決方案裡面會有兩個項目:伺服器 ...
  • 先看一下效果吧: isChecked = false 的時候的效果 isChecked = true 的時候的效果 然後我們來實現一下這個效果吧 第一步:創建一個空的wpf項目; 第二步:在項目裡面添加一個checkbox <Grid> <CheckBox HorizontalAlignment=" ...
  • 在編寫上位機軟體時,需要經常處理命令拼接與其他設備進行通信,通常對不同的命令封裝成不同的方法,擴展稍許麻煩。 本次擬以特性方式實現,以兼顧維護性與擴展性。 思想: 一種命令對應一個類,其類中的各個屬性對應各個命令段,通過特性的方式,實現其在這包數據命令中的位置、大端或小端及其轉換為對應的目標類型; ...