Spring Boot 2.5 重磅發布,黑暗模式太炸了!


前言

距離上次的 Spring Boot 2.4.5 版本發布剛好一個月左右,Spring Boot 又發新版本了!

Spring Boot 又一次性發布了 3 個版本:

  • Spring Boot 2.5.0
  • Spring Boot 2.4.6
  • Spring Boot 2.2.13.RELEASE

在這次發布的 3 個版本中,Spring Boot 2.5 毫無疑問是最重大的一個版本,也是近半年發布的最大版本,上一個 Spring Boot 2.4 版本還是在半年之前。

本文重點介紹下 Spring Boot 2.5.0,另外兩個版本都是優化版本,只是修復了一些bug,以及文檔優化、依賴升級等,就沒什么好介紹的了。

Maven 依賴先給大家奉上:

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>2.5.0</version>
	<type>pom</type>
</dependency>

需要注意的是,2.4.x 版本開始是不帶 .RELEASE 版本后綴的!

Spring Boot 2.5 又帶來了許多新特性和改進,快來看看更新了啥吧!

Spring Boot 2.5 新特性一覽

1、支持 Java 16

我只能說 Spring Boot 厲害了,Java 16 都開始支持了(同時兼容 Java 8),畢竟 Java 16 才發布兩個多月。。

新版本任它發,我們都用 8,所以,雖然現在我們還遠遠用不上 Java 16,但 Spring Boot 能支持上就最好不過,這樣對於那些想基於 Java 16 進行學習、開發的 Spring Boot 的同鞋就太好了(反正不是我)。

參考:JDK 16 正式發布,一次性發布 17 個新特性

2、支持 Gradle 7

Spring Boot Gradle 插件支持 Gradle 7.0.x,並已針對其進行了測試。

3、支持 Jetty 10

Spring Boot 2.5 現在支持 Jetty 10 內嵌了,因為 Jetty 10 需要依賴 Java 11,所以現在默認還是保持在 Jetty 9。

4、支持 HTTP/2 over TCP (h2c)

Spring Boot 2.5 所有內置的容器都可以支持 HTTP/2 over TCP (h2c),而無需進行任何手動定制。

5、新的數據源初始化機制

1)數據源調整

Spring Boot 2.5 中的某些數據源初始化的方法被重新設計了,下面的數據源參數配置也被廢除了:

spring.datasource.*

新的數據源參數配置如下:

spring.sql.init.*

這個改動還挺大的,沒事亂改啥參數,個人覺得之前的沒毛病!

2)Flyway 和 Liquibase 調整

這兩個是主流的數據庫版本管理工具,使用 spring.flyway.urlspring.liquibase.url 定義的時候需要加上 username/ password 進行認證。

早期的版本中,這些參數都是從 spring.datasource 中派生的,用戶在自定義數據源的時候會存在問題。

另外,如果使用了自定義數據源和 Liquibase 一起使用,現在會使用 SimpleDriverDataSource 數據源類進行配置,之前的版本使用的是池化數據源,會導致數據源初始化效率低下。

6、環境變量前綴

Spring Boot 2.5 可以為系統環境變量指定前綴了,這樣可以方便我們在同一環境中運行多個不同的 Spring Boot 應用,而不用受重名環境變量沖突。

使用方法如下:

SpringApplication application = new SpringApplication(Javastack.class);
application.setEnvironmentPrefix("javastack");
application.run(args);

這樣設置一下的話,所有 javastack-* 開頭的系統環境變量才會被綁定。

比如:

javastack-id
javastack-name
javastack-age

7、增強 Docker 映像構建

Spring Boot Maven/ Gradle 插件現在都開始支持:

1)都支持自定義構建包;

2)都支持 Docker 構建包時傳遞卷數據(volume)綁定;

3)都支持打包可執行的 war 文件到 Docker 映像中;

8、Layered WARs

Spring Boot Maven 和 Gradle 插件現在可以創建分層的 WAR 了,分層 WAR 與 Spring Boot 2.3 版本中提供的分層 JAR 工作方式類似,為了可以更好的與 Docker 映像一起使用,提升構建速度。

這個我后續再更新一篇吧,想學習接收最新推送,請持續關注微信公眾號:Java技術棧,公眾號第一時間推送。

9、相關端點和指標變更

1)現在 /info actuator 端點不再默認開放了,如果使用了 Spring Security 的話,這個端點還需要身份認證才能訪問,加強 info 端點的安全性;

2)新增了 /quartz 端點,這個端點提供了 Quartz 作業和觸發器相關的的詳細數據;

3)為 /startup 端點支持 get 請求,與 post 請求不同的是,get 請求的端點不會釋放事件緩沖區,而且事件將繼續保留在內存中;

4)為 /actuator/prometheus 端點提供標准 Prometheus 以及 OpenMetrics 響應;

5)為 Spring Data repositories 生成 Micrometer 指標;

6)自動生成 MongoDB 連接池、客戶端命令相關指標;

10、官方文檔界面和功能更新,還支持黑暗模式

Spring 項目首頁黑暗模式:

Spring Boot 文檔黑暗模式:

這個功能太炸了,有了黑暗模式,Java 程序員同鞋們再也不怕晚上熬夜學習 Spring Boot 了,如果你說你的電腦本來就支持,那當然沒問題,但是原生支持可能兼容性更好。。

另外棧長順便看了下 Spring / Spring Cloud 的文檔,目前還不支持黑暗模式,估計后面所有項目文檔都會支持上。

Spring Boot 2.5 依賴升級

升級了一系列依賴的 Spring 項目版本:

  • Spring Data 2021.0
  • Spring HATEOAS 1.3
  • Spring Integration 5.5
  • Spring Kafka 2.7
  • Spring Retry 1.3
  • Spring Security 5.5
  • Spring Session 2021.0

升級了一系列依賴的第三方依賴庫:

  • Kotlin 1.5
  • Groovy 3.0
  • Flyway 7.7
  • Liquibase 4.2
  • Jackson 2.12
  • Kafka 2.7
  • Cassandra Driver 4.10
  • Embedded Mongo 3.0
  • Hibernate Validator 6.2
  • Jersey 2.33
  • Mockito 3.7
  • MongoDB 4.2
  • JUnit Jupiter 5.7
  • Elasticsearch 7.12

Spring Boot 2.5 功能廢除

1)移除 Spring Data Solr 相碰的自動配置,由於 Spring Data 2021.0.0 已經將其移除了;

2)移除了 org.springframework.boot.actuate.endpoint.http 包下的 ActuatorMediaType 和 ApiVersion 類;

3)jOOQ’s *Provider 的相關回調接口實現和設置已經被棄用,現在應該改用 DefaultConfigurationCustomizer 配置類;

4)org.springframework.boot.autoconfigure.data.jpa 包下的 EntityManagerFactoryDependsOnPostProcessor 類被移到了 org.springframework.boot.autoconfigure.orm.jpa 包下;

總結

終於寫完了,又肝了一個周末!!

可以看出 Spring Boot 2.5 的變更還是蠻大的,特別是新的數據源機制、相關端點的變更,還有許多框架的重大版本升級。

切記不要輕易升級到這個版本,如需升級,最好是詳細看清楚變更內容,做好充分測試,以免年終獎沒了。。

后續棧長有時間再深入研究下更多的細節,給大家帶來更詳細的技術文章,關注公眾號Java技術棧第一時間推送。

最后,大家覺得本文有用的話,動動小手,給棧長來個小小的在看、轉發唄,原創不易,需要你的鼓勵哦~

更多請參考官方文檔:

https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.5-Release-Notes

版權申明:本文系公眾號 "Java技術棧" 原創,原創實屬不易,轉載、引用本文內容請注明出處,禁止抄襲、洗稿,請自重,尊重他人勞動成果和知識產權。
近期熱文推薦:

1.600+ 道 Java面試題及答案整理(2021最新版)

2.終於靠開源項目弄到 IntelliJ IDEA 激活碼了,真香!

3.阿里 Mock 工具正式開源,干掉市面上所有 Mock 工具!

4.Spring Cloud 2020.0.0 正式發布,全新顛覆性版本!

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM