Spring Boot 2 正式停止維護。。再見了,Java 8!!

大家好,我是棧長。

沒錯,就在昨天,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 應用程序進行設置檢查點(製作圖像,快照)而不影響其執行,並能通過檢查點進行恢復。

詳細介紹如下:

https://openjdk.org/projects/crac/

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-filespring.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:

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

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

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

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

近期熱文推薦:

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

2.勁爆!Java 協程要來了。。。

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

4.別再寫滿屏的爆爆爆炸類了,試試裝飾器模式,這纔是優雅的方式!!

5.《Java開發手冊(嵩山版)》最新發布,速速下載!

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章