前言
距離上次的 Spring Boot 2.4.5 版本發佈恰好一個月左右,Spring Boot 又發新版本了!java
Spring Boot 又一次性發布了 3 個版本:git
- 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,以及文檔優化、依賴升級等,就沒什麼好介紹的了。github
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
Spring Boot 2.5 又帶來了許多新特性和改進,快來看看更新了啥吧!sql
Spring Boot 2.5 新特性一覽
一、支持 Java 16
我只能說 Spring Boot 厲害了,Java 16 都開始支持了(同時兼容 Java 8),畢竟 Java 16 才發佈兩個多月。。數據庫
新版本任它發,咱們都用 8,因此,雖然如今咱們還遠遠用不上 Java 16,但 Spring Boot 能支持上就最好不過,這樣對於那些想基於 Java 16 進行學習、開發的 Spring Boot 的同鞋就太好了(反正不是我)。安全
參考:JDK 16 正式發佈,一次性發布 17 個新特性微信
二、支持 Gradle 7
Spring Boot Gradle 插件支持 Gradle 7.0.x,並已針對其進行了測試。
三、支持 Jetty 10
Spring Boot 2.5 如今支持 Jetty 10 內嵌了,由於 Jetty 10 須要依賴 Java 11,因此如今默認仍是保持在 Jetty 9。
四、支持 HTTP/2 over TCP (h2c)
Spring Boot 2.5 全部內置的容器均可以支持 HTTP/2 over TCP (h2c),而無需進行任何手動定製。
五、新的數據源初始化機制
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 數據源類進行配置,以前的版本使用的是池化數據源,會致使數據源初始化效率低下。
六、環境變量前綴
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
七、加強 Docker 映像構建
Spring Boot Maven/ Gradle 插件如今都開始支持:
1)都支持自定義構建包;
2)都支持 Docker 構建包時傳遞卷數據(volume)綁定;
3)都支持打包可執行的 war 文件到 Docker 映像中;
八、Layered WARs
Spring Boot Maven 和 Gradle 插件如今能夠建立分層的 WAR 了,分層 WAR 與 Spring Boot 2.3 版本中提供的分層 JAR 工做方式相似,爲了能夠更好的與 Docker 映像一塊兒使用,提高構建速度。
這個我後續再更新一篇吧,想學習接收最新推送,請持續關注微信公衆號:Java技術棧,公衆號第一時間推送。
九、相關端點和指標變動
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 鏈接池、客戶端命令相關指標;
十、官方文檔界面和功能更新,還支持黑暗模式
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 正式發佈,全新顛覆性版本!
以爲不錯,別忘了隨手點贊+轉發哦!