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

Java技术栈發表於2024-05-28

大家好,我是R哥。

最新訊息,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 Boot JDK Spring Maven Gradle
3.3.0 17 ~ 22 6.1.8+ 3.6.3+ 7.5+,8.x
3.2.0 17 ~ 21 6.1.1+ 3.6.3+ 7.5+,8.x
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

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

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

R哥製作的《Java 17 新特性實戰課》都可以報名學起來,好課不貴,199 元永久學習,如後續出了 Java 21 及更多版本新內容都能免費更新。

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 應用程式的啟動速度會大大提升,要直接起飛了。

推薦一個開源免費的 Spring Boot 實戰專案:

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

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 這個版本的變化還挺大的,很多功能都得到了增強,做技術的真要時刻保持對新技術的渴望啊,不然都跟不上時代的步伐了。

Spring Boot 最新最全的實戰程式碼已上傳 Github:

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

如果你還沒用過 Spring Boot,這裡推薦下我的《Spring Boot 核心技術課》,16 個模組,幾乎涉及所有核心技術,包括底層實現原理及程式碼實戰,知識點非常齊全,助你快速打通 Spring Boot 的各個環節。

有需要的直接掃碼訂閱:

一次訂閱,永久學習,免費更新。

現在活動,訂閱本課程還贈送Java面試庫VIP 一年,已經幫助許多小夥伴進入大廠,價值過萬,訂閱後請在支付完成頁面聯絡作者領取。

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

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

更多文章推薦:

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

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

3.免費獲取 IDEA 啟用碼的 7 種方式(2024最新版)

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

相關文章