天天看點

Spring Boot 2.5 重磅釋出,黑暗模式太炸了!

前言

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

Spring Boot 2.5 重磅釋出,黑暗模式太炸了!

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.url 和 spring.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 2.5 重磅釋出,黑暗模式太炸了!

Spring Boot 文檔黑暗模式:

Spring Boot 2.5 重磅釋出,黑暗模式太炸了!

這個功能太炸了,有了黑暗模式,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