大家好,我是棧長。
沒錯,就在昨天,Spring Boot 2.x 停止維護了。。
Spring Boot 最後一個 2.x 的版本 2.7.x 已經停止維護,3.0.x 也停止維護了,商業支持的版本也只有 2.6.x 了,2.5.x 以下的版本徹底退出歷史舞臺。。
從路線圖可以看到每個版本的終止時間,包括最新的 Spring Boot 3.2.0,也會在一年後壽終正寢,所以,Spring Boot 2 的停止維護是預知的必然結果,Spring 團隊只會把更多的時間和資源集中在新版本的開發和維護上,這也是爲了推動整個 Java 生態系統向前發展。
同時在昨天,Spring Boot 還一次性發布了四個版本:
- 3.2.0
- 3.1.6
- 3.0.13
- 2.7.18
最新版本如下圖所示:
所以,3.0.13 和 2.7.18 可能是該版本線最後一個版本了,而 2.7.18 則是支持 Java 8 的最後一個版本了。
來看看最新的 3.2.0 新特性!!
Spring Boot 3.2.0 新特性
1、最低環境要求
Spring Boot 3.0.0 開始支持並最低要求 Java 17,Spring Boot 3.1.5 開始支持 Java 21 了。
對 Java 開發環境的要求對比表:
Spring Boot | JDK | Spring | Maven | Gradle |
---|---|---|---|---|
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%!!
棧長製作的《Java 17 新特性實戰課》都可以報名學起來,好課不貴,199 元永久學習,如後續出了 Java 21 及更多版本新內容都能免費更新。
2、支持虛擬線程
什麼是虛擬線程?
虛擬線程是一種成本低廉、輕量級的用戶模式的線程實現,也就是傳說中的 “協程”,它可以充分利用可用硬件,大幅減少編寫、維護和監測高併發應用的工作量。
我們都知道使用線程是要十分注意的,因爲線程的創建、銷燬都十分消耗系統資源,所以有了線程池,但這還不夠,因爲線程的數量是有限的,線程會阻塞操作系統線程,無法儘可能的提高吞吐量。
因爲使用線程的成本很高,所以纔會有了虛擬線程,它是用戶態線程,成本是相當低廉的,調度也完全由用戶進行控制(JDK 中的調度器),它同樣可以進行阻塞,但不用阻塞操作系統線程,充分提高了硬件利用率,高併發也上了一個量級,從而實現了高吞吐量。
Java 19 初次引入虛擬線程,在 Java 21 中正式轉正生產可用。
Spring Boot 3.1.5 做了對 Java 21 的兼容,Spring Boot 3.2.0 正式可以支持 Java 21 中的虛擬線程了,只需要添加以下配置即可:
spring.threads.virtual.enabled = true
具體用法,後續會在我的《Spring Boot 核心技術課》中進行更新。
3、支持 CRaC
Spring Boot 3.2.0 添加了對 CRaC 的初始支持,CRaC 全稱爲:Coordinated Restore at Checkpoint,這是一個 OpenJDK 支持的項目,它主要處理對 Java 應用程序進行設置檢查點(製作圖像,快照)而不影響其執行,並能通過檢查點進行恢復。
詳細介紹如下:
4、SSL Bundle 重載
當 SSL bundles 相關密鑰信息發生變化時,現在可以支持自動重載了。
目前支持 SSL Bundle 重載的 Web 服務器:·
- Netty web server
- Tomcat web server
需要在 SSL Bundle 中設置 reload-on-update = true,參考示例如下:
spring.ssl.bundle.pem.mybundle.reload-on-update=true
spring.ssl.bundle.pem.mybundle.keystore.certificate=file:/some/directory/application.crt
spring.ssl.bundle.pem.mybundle.keystore.private-key=file:/some/directory/application.key
文件監視器會監視密鑰文件,如果該文件發生變化,SSL Bundle 包將重新加載。
5、可觀測性改進
1)現在可以使用 Micrometer 的各種註解,包括:@Timed
、@Counted
、@NewSpan
、@ContinueSpan
、@Observed
等,如果集成了 AspectJ,這些切面將會自動配置。
2)Micrometer 追蹤使用的 ObservationHandler
相關 Beans 現在會自動註冊到 ObservationConfig 配置類上。
3)B3 追蹤傳播的默認格式由 single-no-parent
變更爲 single
。
4)現在已對 @Scheduled
註解的方法進行可觀測性支持。
5)現在添加了對 R2DBC
的可觀察性支持。
6、更多支持項
Spring Boot 3.2.0 對大量 Spring 庫和第三方類庫都得到了更新。
還添加對以下技術的支持和改進:
- RestClient
- JdbcClient
- Jetty
- Spring for Apache Pulsar
- 添加對 Kafka、RabbitMQ 的 SSL bundle 支持
- 嵌套 Jar 支持
- Docker 鏡像構建改進
7、變更項
幾個重要的變更項:
1)移除 OkHttp 3,並支持 OkHttp 4。
2)參數 management.metrics.tags.
被 management.observations.key-values.
替代。
3)LoggingSystemProperties 和 LogbackLoggingSystemProperties 類中的許多常量被移除,被相關枚舉替代。
4)Flyway 參數變更, flyway.oracle*
被 flyway.oracle.*
替代,spring.flyway.sql-server-kerberos-login-file
被 spring.flyway.sqlserver.kerberos-login-file
替代。
5)線程池變更,TaskExecutorBuilder
類被 ThreadPoolTaskExecutorBuilder
類替代,TaskSchedulerBuilder
類被 ThreadPoolTaskSchedulerBuilder
類替代。
更多細節可以參考官方發佈說明:
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.2.0-Release-Notes
總結
Spring Boot 這次的變化還挺大的,特別是 Spring Boot 2.x 系列的停止維護,還有 Spring Boot 3.2.0 全新支持虛擬線程的版本。
不管怎麼樣,還是不要迷戀過去了,所有版本都將是歷史,作爲一個技術人,我們要向前看,不斷更新自己的知識和技能纔是最重要的。
Spring Boot 最新最全的實戰代碼已上傳 Github:
如果你還沒用過 Spring Boot,這裏推薦下棧長的《Spring Boot 核心技術課》,16 個模塊,幾乎涉及所有核心技術,包括底層實現原理及代碼實戰,知識點非常齊全,助你快速打通 Spring Boot 的各個環節。
好了,今天的分享就到這裏了,後續棧長也會繼續關注並分享更多的 Spring Boot 資訊和乾貨,關注公衆號Java技術棧第一時間推送。
版權聲明: 本文系公衆號 "Java技術棧" 原創,轉載、引用本文內容請註明出處,抄襲、洗稿一律投訴侵權,後果自負,並保留追究其法律責任的權利。
近期熱文推薦:
1.1,000+ 道 Java面試題及答案整理(2022最新版)
4.別再寫滿屏的爆爆爆炸類了,試試裝飾器模式,這纔是優雅的方式!!
覺得不錯,別忘了隨手點贊+轉發哦!