javascript
Spring Boot 2.x 新特性总结及迁移指南
這一篇文章主要講解 Spring Boot 2.x 與 1.5.x 的區(qū)別,2.x 主要更新了什么東西,以便對(duì) Spring Boot 2.x 有一個(gè)詳細(xì)的了解。
本文講的 1.x 指的是 1.5.10, 2.x 指的是 2.0.0。
-
配置變更
在 2.x 中廢除了一些 1.x 中的配置,并增加了許多新配置,詳細(xì)請(qǐng)查看以下鏈接中的變更表格。
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Configuration-Changelog
-
依賴 JDK 版本升級(jí)
2.x 至少需要 JDK 8 的支持,2.x 里面的許多方法應(yīng)用了 JDK 8 的許多高級(jí)新特性,所以你要升級(jí)到 2.0 版本,先確認(rèn)你的應(yīng)用必須兼容 JDK 8。
另外,2.x 開始了對(duì) JDK 9 的支持。
-
第三方類庫升級(jí)
2.x 對(duì)第三方類庫升級(jí)了所有能升級(jí)的穩(wěn)定版本,一些值得關(guān)注的類庫升級(jí)我給列出來了。
1) Spring Framework 5+
2) Tomcat 8.5+
3) Flyway 5+
4) Hibernate 5.2+
5) Thymeleaf 3+
-
響應(yīng)式 Spring 編程支持
2.x 通過啟動(dòng)器和自動(dòng)配置全面支持 Spring 的響應(yīng)式編程,響應(yīng)式編程是完全異步和非阻塞的,它是基于事件驅(qū)動(dòng)模型,而不是傳統(tǒng)的線程模型。就連 Spring Boot 內(nèi)部也對(duì)一些功能點(diǎn)進(jìn)行了有必要的響應(yīng)式升級(jí),最值得注意的是對(duì)內(nèi)嵌式容器的支持。
對(duì)響應(yīng)式編程支持又包括以下幾個(gè)技術(shù)模塊。
1) Spring WebFlux & WebFlux.fn 支持
2) 響應(yīng)式 Spring Data 支持
3) 響應(yīng)式 Spring Security 支持
4) 內(nèi)嵌式的 Netty 服務(wù)器支持
-
HTTP/2 支持
提供對(duì)HTTP/2 的支持,如:Tomcat, Undertow, Jetty,這個(gè)得依賴具體選擇的應(yīng)用服務(wù)器和應(yīng)用環(huán)境。
-
配置屬性綁定
在 1.x 中,配置綁定是通過注解 @ConfigurationProperties 來注入到 Spring 環(huán)境變量中的。
在 2.x 中,配置綁定功能有了些的改造,在調(diào)整了 1.x 中許多不一致地方之外,還提供了獨(dú)立于注解之外的 API 來裝配配置屬性。并增加了屬性來源,這樣你就能知道這些屬性是從哪個(gè)配置文件中加載進(jìn)來的。
-
Gradle 插件
Spring Boot的 Gradle 插件全面重寫了,并且最小支持 Gradle 4+ 以便提供一些重要的特性提升。
-
Kotlin
2.x 開始提供對(duì) Kotlin 1.2 的支持,并且提供了一個(gè) runApplication 函數(shù)來運(yùn)行 Spring Boot 應(yīng)用。
-
Actuator加強(qiáng)
在 2.x 中,對(duì)執(zhí)行器端點(diǎn)進(jìn)行了許多改進(jìn),所有的 HTTP 執(zhí)行端點(diǎn)現(xiàn)在都暴露在 /actuator路徑下,并對(duì) JSON 結(jié)果集也做了改善。
-
Data 支持
上面有說到對(duì)響應(yīng)式 Spring Data 的支持,除此之外,其他 Data 模塊也做了許多更新和提升,具體體現(xiàn)在以下幾個(gè)地方。
1) 2.x 默認(rèn)使用 HikariCP 連接池;
2) 更加合理化的優(yōu)化了數(shù)據(jù)庫初始化邏輯;
3) spring.jdbc.template 自動(dòng)配置現(xiàn)在可以通過 spring.jdbc.template 屬性定制;
4) 提供了新配置 spring.jdbc.template 方便分頁和排序;
5) 對(duì)數(shù)據(jù)庫 spring.jdbc.template 自動(dòng)化配置支持;
6) 可以高級(jí)定制 MongoDB 客戶端;
7) 可以通過 spring.cache.redis.* 來配置 Redis 緩存默認(rèn)值。
-
Web加強(qiáng)
除了上面說了 2.x 對(duì)響應(yīng)式框架的支持,還包括以下幾個(gè) web 開發(fā)改進(jìn)。
1) 使用內(nèi)嵌式容器時(shí),context path 會(huì)和端口一起記錄并打印出來;
2) 所有支持的容器都支持過濾器的初始化;
3) Thymeleaf 開始支持 javax.time 類型;
4) 提供了一個(gè) spring-boot-starter-json 啟動(dòng)器對(duì) JSON 讀寫的支持。
-
Quartz支持
2.x 提供了一個(gè) spring-boot-starter-quartz 啟動(dòng)器對(duì)定時(shí)任務(wù)框架 Quartz 的支持;
-
測試加強(qiáng)
在 2.x 中,對(duì)測試模塊有了一些調(diào)整。
-
其他一些改進(jìn)
-
動(dòng)態(tài)啟動(dòng)圖案支持
?
遷移指南
從 1.5.x 可以順利升級(jí)到 2.x,如果你的應(yīng)用還停留在 1.5.x 之前的版本,建議先升級(jí)到 1.5.x,而不是直接升級(jí)到 2.x,這樣的升級(jí)風(fēng)險(xiǎn)最小。
詳細(xì)的遷移說明有點(diǎn)多,這里就不一一介紹了,具體請(qǐng)閱讀官方遷移文檔:
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Migration-Guide
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的Spring Boot 2.x 新特性总结及迁移指南的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 10 种保护 Spring Boot 应
- 下一篇: Spring Boot 最核心的 3 个