Spring Boot 3.3 正式發布,王炸級更新,應用啟動速度直接起飛!

最新消息,Spring Boot 一次性發布了 3 個版本:

  • 3.3.0

  • 3.2.6

  • 3.1.13

Spring Boot 3.3 正式發布了,3.1.x 在前幾天也停止維護了。

最新的支持版本如下:

圖片

從路線圖可以看到每個版本的終止時間,每個版本的生命周期只有一年。

Spring Boot 進入了全新的 3.x 時代了,3.1.x 和 3.0.x 也相繼停止維護了,商業支持的版本也只有 2.7+ 了,2.6.x 以下的版本徹底退出歷史舞臺。。

Spring Boot 3.3.0 新特性

1、最低環境要求

Spring Boot 3.0.0 開始支持并最低要求 Java 17,Spring Boot 3.1.5 開始支持 Java 21 了。

對 Java 開發環境的要求對比表:

Spring BootJDKSpringMavenGradle
3.3.017 ~ 226.1.8+3.6.3+7.5+,8.x
3.2.017 ~ 216.1.1+3.6.3+7.5+,8.x
3.1.017 ~ 206.0.9+3.6.3+7.5+,8.x
3.0.017 ~ 196.0.2+3.5+7.5+
2.7.128 ~ 205.3.27+3.5+6.8.x, 6.9.x, 7.x, 8.x

支持 Java 8 的最后一個 Spring Boot 2.x 系列版本已經退伍啦,Java 17 的新時代到來。

如果你還停留在 Java 8 就 OUT 了,過去一兩年,Java 8 采用率腰斬,Java 17 暴漲 430%!!

2、CDS 支持(可縮短啟動時間)

什么是 CDS?

CDS 全稱為:Class Data Sharing,即類數據共享,它是 JVM 的一項功能,它可以在多個 JVM 之間共享類,從而幫助減少 Java 應用程序的啟動時間和內存占用。

CDS 可以生成一個稱為共享類歸檔(Shared Class Archive)的文件,即 *.jsa 文件,該文件包含預處理的類元數據,它會在 JVM 啟動時加載到內存,以便 JVM 可以快速訪問這些類元數據,而不需要在啟動時重新加載和解析這些類信息,從而大大減少了啟動時間。

使用方式如下:

$?java?-Djarmode=tools?-jar?test-app.jar?extract?--destination?application
$?cd?application
$?java?-XX:ArchiveClassesAtExit=application.jsa?-Dspring.context.exit=onRefresh?-jar?test-app.jar

這里它便會創建一個?application.jsa?文件,只要應用程序未更新,就可以重復使用該文件。如果要使用緩存,需要在啟動應用程序時添加一個額外的參數:

$?java?-XX:SharedArchiveFile=application.jsa?-jar?test-app.jar

有了這個特性支持,Spring Boot 應用程序的啟動速度會大大提升,要直接起飛了。

3、Websockets 支持虛擬線程

Spring Boot 3.3.0 添加了 Websockets 對虛擬線程支持。

什么是虛擬線程?

虛擬線程是一種成本低廉、輕量級的用戶模式的線程實現,也就是傳說中的 “協程”,它可以充分利用可用硬件,大幅減少編寫、維護和監測高并發應用的工作量。

我們都知道使用線程是要十分注意的,因為線程的創建、銷毀都十分消耗系統資源,所以有了線程池,但這還不夠,因為線程的數量是有限的,線程會阻塞操作系統線程,無法盡可能的提高吞吐量。

因為使用線程的成本很高,所以才會有了虛擬線程,它是用戶態線程,成本是相當低廉的,調度也完全由用戶進行控制(JDK 中的調度器),它同樣可以進行阻塞,但不用阻塞操作系統線程,充分提高了硬件利用率,高并發也上了一個量級,從而實現了高吞吐量。

Java 19 初次引入虛擬線程,在 Java 21 中正式轉正生產可用。

Spring Boot 3.1.5 做了對 Java 21 的兼容,Spring Boot 3.2.0 正式可以支持 Java 21 中的虛擬線程了,只需要添加以下配置即可:

spring.threads.virtual.enabled = true

4、配置文件支持 Base64

配置文件增強了,現在可以在 property 和 YAML 配置文件文件中將資源加載為 Base64 格式的值了,即使用?base64:?前綴將資源加載為 Base64 編碼的文本值,這對于 SSL 證書等資源非常有用。

如下面配置示例:

spring:ssl:bundle:pem:mybundle:keystore:certificate:?"base64:Ts9tL8UYRUdJTi..."private-key:?"base64:Yk1dIEF0dHJpYn..."

5、支持 SBOMs

支持 SBOMs,并添加了一個 SBOM 端點。

SBOM 全稱為:Software Bill of Materials,即軟件材料清單,它用于提供軟件組件的清單和詳細信息,包括其涉及到的開源和第三方依賴、庫、工具等。

SBOM 的主要目的是提高軟件的透明度,幫助開發人員、安全團隊理解軟件中包含的具體內容,從而更好地管理安全風險、許可證合規性和依賴項的更新。

6、其他

1)可觀察性增強了,主要添加了對?Micrometer?的?@SpanTag?注解的支持,新增了一個?InfoContributor?以及對 Prometheus 1.x 支持。

2)Spring Security 增強了,主要添加了對?JwtAuthenticationConverter?的自動配置。

3)服務連接支持增強了,主要添加了對Apache ActiveMQ Artemis 和 LDAP 的服務連接支持。

4)容器鏡像增強了,主要添加了對 Docker Compose 對?Bitnami?容器鏡像的支持。

5)大量 Spring 庫和第三方類庫都得到了更新,還有一些廢除項。

總結

Spring Boot 3.3 這個版本的變化還挺大的,很多功能都得到了增強,做技術的真要時刻保持對新技術的渴望啊,不然都跟不上時代的步伐了。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/14987.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/14987.shtml
英文地址,請注明出處:http://en.pswp.cn/web/14987.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

安徽大學數學科學學院教授陳昌昊

男,本(2005-2009)、碩(2009-2012)學位都在湖北大學獲得,博士學位在芬蘭獲得(2012-2016),博士后分別在澳大利亞(2016-2019)、香港(2020…

vue3中el-form表單校驗,再點擊提交按鈕的時候通過校驗才進行提交

vue3中el-form表單校驗&#xff0c;再點擊提交按鈕的時候通過校驗才進行提交 一、前言1、案例 一、前言 在 Vue 3 中&#xff0c;可以使用 Element UI 的 <el-form> 組件配合 <el-form-item> 來實現表單的必填項校驗&#xff0c;并在提交時根據校驗結果來決定是否…

clickhouse 中的數組(array)和元組(Tuple)—— clickhouse 基礎篇(二)

文章目錄 數組判斷是否為空計算數組長度獲取數組元素判斷某個元素是否存在數組切片數組元素展開數組元素去重刪除連續重復元素連接多個數組數組倒序數組拍平數組元素映射數組元素過濾數組聚合分析計算數組交集計算數組并集計算數組差集SQL 子查詢進行集合操作 元組創建元組獲取…

LeetCode刷題之HOT100之二叉樹的直徑

2024/5/25 陰天。這幾天睡眠質量都非常好&#xff0c;一切似乎都在慢慢上升。先把題做了 1、題目描述 2、邏輯分析 題目要求就是給一個二叉樹&#xff0c;求出兩個節點之間的最大長度即為二叉樹的直徑。怎么做呢&#xff1f;我想不出來。看一下題解吧。題解給出的解法是深度優…

Swagger2 和 Swagger3 的不同

Swagger2 和 Swagger3 的不同 SpringBoot 整合 Swagger3 和 Swagger2 的主要區別如下&#xff1a; 區別一&#xff1a;引入不同的依賴 如果使用的是 Swagger 3 <dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter<…

Linux——Docker容器虛擬化平臺

安裝docker 安裝 Docker | Docker 從入門到實踐https://vuepress.mirror.docker-practice.com/install/ 不需要設置防火墻 docker命令說明 docker images #查看所有本地主機的鏡像 docker search 鏡像名 #搜索鏡像 docker pull 鏡像名 [標簽] #下載鏡像&…

學習java第八十天

ApplicationContext有哪些常見實現&#xff1f; FileSystemXmlApplicationContext容器從XML文件加載bean的定義。XML bean配置文件的完整路徑必須提供給構造函數。 ClassPathXmlApplicationContext容器也從XML文件加載bean的定義。這里&#xff0c;你需要正確設置classpath因…

mybatis-plus 優雅的寫service接口中方法(3)

多表聯查 上文講過了自定義sql &#xff0c;和wrapper的使用&#xff0c;但是我們可以發現 我們查詢的都是數據庫中的一張表&#xff0c;那么怎么進行多表聯查呢&#xff0c;當然也是用自定義sql來進行實現 比如說 查詢 id 為 1 2 4 的用戶 并且 地址在北京 的 用戶名稱 普…

Elasticsearch不刪原有jdk8導致的系列安裝和啟動問題

以前在空機器直接裝elasticsearch&#xff0c;沒有遇到什么問題。今天在現有JDK上安裝&#xff0c;遇到的問題記錄一下&#xff1a; 1. JDK的環境變量配置與我原有的不一致報如下錯誤&#xff1a; [estestZK-DES-I root]$ /usr/elasticsearch/bin/elasticsearch could not fi…

python-數據分析與可視化基礎

1、data1.csv中的B、C、D和E列數據分別是日期、權重、A企業的銷售額、B企業的銷售額。讀取C、D、E列數據,并統計E列數據的算術平均數、加權平均值(權值為C列數據)、方差、中位數、最小值、最大值。并繪制E列數據的直方圖。 &#xff08;1&#xff09;源代碼&#xff1a; impo…

JavaScript異步編程:理解和使用Promise、Async/Await

JavaScript是一種單線程語言&#xff0c;這意味著它一次只能執行一個任務。然而&#xff0c;在Web開發中&#xff0c;我們經常需要處理異步操作&#xff0c;例如網絡請求、定時器、事件監聽等。JavaScript提供了多種方式來處理異步編程&#xff0c;包括回調函數、Promise、Asyn…

什么生信流程語言讓你極度爽?

生信流程搭建有多難&#xff1f;行業為解決這一問題提出了各種各樣的配方&#xff0c;有你熟悉的嗎&#xff1f; 一、困境 - 亂 無數機構投入大量人力物力&#xff0c;以期獲得一條條可用的生信流程。而有些流程&#xff0c;由于種種原因&#xff0c;存在著巨大的缺陷&#xf…

安全風險 - 切換后臺時背景模糊處理

因為安全風險中提到當app處于后臺卡片狀態時&#xff0c;顯示的卡片頁面應該為模糊效果&#xff0c;否則容易泄露用戶隱私&#xff0c;尤其當前頁涉及個人信息、資產信息等&#xff0c;都會造成信息泄露&#xff01;基于這種場景&#xff0c;我研究了下這種業務下的模糊效果 找…

普通函數的參數中的auto

2.1 普通函數的參數中的auto 從c14起&#xff0c;lambda可以使用auto占位符聲明或者定義參數: auto printColl [] (const auto& coll) // generic lambda{ for (const auto& elem : coll) {std::cout << elem << \n;}} 只要支持Lambda 內部的操作&…

【OS】AUTOSAR Os是如何啟動第一個Task的

目錄 前言 正文 1.總體概覽及背景介紹 1.1. Os默認的Hook配置 1.2 用戶Task的配置

Golang創建文件夾

方法 package zdpgo_fileimport ("os" )// AddDir 創建文件夾 func AddDir(dir string) error {if !IsExist(dir) {return os.MkdirAll(dir, os.ModePerm)}return nil }測試 package zdpgo_fileimport "testing"func TestAddDir(t *testing.T) {data : […

第八屆“英拿科技杯”上海高校金馬程序設計聯賽暨東華大學邀請賽

第八屆“英拿科技杯”上海高校金馬程序設計聯賽暨東華大學邀請賽 儀表盤所有提交榜單 I. 孤星 單點時限: 2.0 sec 內存限制: 512 MB &#x1d45b;(1≤103) 個干員&#xff0c;每個干員工資為 &#x1d464;&#x1d456;(1≤&#x1d464;&#x1d456;≤105)&#xff0c;貢獻…

JAVA云HIS醫院系統源碼 HIS源碼:云HIS系統與SaaS的關系

云HIS系統與SaaS的關系 云HIS系統是一種基于云計算技術的醫院信息系統&#xff0c;它采用B/S架構&#xff0c;通過云端SaaS服務的方式提供。用戶可以通過瀏覽器訪問云HIS系統&#xff0c;無需關注系統的部署、維護、升級等問題。云HIS系統通常具有模板化、配置化、智能化等特點…

react記錄部署

導語 React中的核心概念 1 虛擬DOM&#xff08;Virtual DOM&#xff09; 2 Diff算法&#xff08;虛擬DOM的加速器&#xff0c;提升React性能的法寶&#xff09; React主要的原理 Virtual DOM 虛擬DOM; 提供了一種不同的而又強大的方式來更新DOM&#xff0c; 代替直接的DOM操…

cuda11.8安裝torch2.0.1

pip install torch2.0.1 torchvision0.15.2 torchaudio2.0.2 --index-url https://download.pytorch.org/whl/cu118