當前位置:
首頁 > 最新 > Spring Boot 2.0.0 終於正式發布,重大修訂版本

Spring Boot 2.0.0 終於正式發布,重大修訂版本

北京時間 2018 年 3 月 1 日早上,如約發布的 Spring Boot 2.0 在同步至 Maven 倉庫時出現問題,導致在 GitHub 上發布的 v2.0.0.RELEASE 被撤回。目前問題已修復,官方重新發布了 Spring Boot 2.0,並提供了 Maven 中央倉庫地址。

使用 Spring Boot 2.0.0 GA

Maven

Gradle

而 Spring Boot 2.0.1 也被標記為 SNAPSHOT 狀態

Maven

Gradle

官方表示,這個版本經歷了 17 個月的開發,有 215 個不同的使用者提供了超過 6800 次的提交。非常感謝提供貢獻的每一位用戶,並感謝所有對這些里程碑版本提供重要反饋的早期採用者。

該版本是自 4 年前發布 Spring Boot 1.0 以來的第一次重大修訂,也是首個提供對 Spring Framework 5.0 支持的 GA 穩定版本。

新版本值得關注的亮點:

基於 Java 8,支持 Java 9

支持 Quartz 調度程序

大大簡化了安全自動配置

支持嵌入式 Netty

Tomcat, Undertow 和 Jetty 均已支持 HTTP/2

全新的執行器架構,支持 Spring MVC, WebFlux 和 Jersey

使用 Spring WebFlux/WebFlux.fn 提供響應式 Web 編程支持

用於響應式 Spring Data Cassandra, MongoDB, Couchbase 和 Redis 的自動化配置和啟動器 POM

引入對 Kotlin 1.2.x 的支持,並提供了一個 runApplication 函數,讓你通過慣用的 Kotlin 來運行 Spring Boot 應用程序。更多信息請參閱參考文檔中對 Kotlin 的支持部分

啟動時的 ASCII 圖像 Spring Boot banner 現已支持 GIF

Spring Boot 2 新特性解讀

根據我們此前的報道,Spring Boot 2 最大的變化主要集中在以下幾方面:

Spring Boot 2 基於 Spring Framework 5,而整個 Spring Framework 5.0 代碼庫運行於 Java 8 之上。所以,Spring Boot 2 要求的 JDK 版本最低也是 Java 8,同時也已正式支持 Java 9(這裡有一份使用 Java 9 運行 Spring Boot 的文檔 https://www.oschina.net/translate/spring-boot-with-java9)

與 Spring Boot 1 的差別在於,許多配置屬性已被重命名或被刪除,因此由 Spring Boot 1 遷移至 Spring Boot 2 需要注意一些配置屬性

Spring Boot 為 Java 應用程序引入的關鍵創新是將 Servlet 容器嵌入到一個可執行的 jar 包中,這個 jar 包會打包整個應用。Spring Boot 還提供了 Tomcat、Undertow 和 Jetty 作為可選的方案

在此前發布的 RC 版本中,Tomcat、Undertow 和 Jetty 均已支持 HTTP/2,並通過 Conscrypt 庫提供對原生 TLS 的支持。這對 Spring Boot 的默認伺服器 Tomcat 8.5.x 來說意義重大,如果 libtcnative 庫及其依賴項安裝在主機操作系統上,則只支持 HTTP/2。

監控方面,Spring Boot 2 增強了對 Micrometer 的集成。RabbitMQ、JVM 線程和垃圾收集指標會自動進行 instrument 監控,非同步控制器(controller)也會自動添加到監控里。通過集成,還可以對 InfluxDB 伺服器進行監控。

數據方面,Spring Boot 2 讓你能夠以更加細粒度的方式自定義 Hibernate 屬性。另外,還可以暴露 RedisCacheConfiguration,從而控制 RedisCacheManager。Flyway 和 Liquibase 配置也更靈活。

此外,Spring Boot 2 也大大增強了對 GSON 的支持,還包含了改進的 actuator JSON 架構。

還有一個值得關注的變更就是 Spring Boot banner —— 即啟動時的 ASCII 圖像,它被開發團隊廣泛應用於展示自己的應用品牌信息。在 Spring Boot 2 中,現已支持動畫 GIF。

值得注意的是,在 Spring Boot 2.0 中,許多配置屬性已被重命名或被刪除,為了方便升級,Spring Boot 發布了一個新的 spring-boot-properties-migrator 模塊。只要將其作為依賴添加到項目中,它不僅會分析應用程序的環境並在啟動時列印診斷信息,而且還會在運行時階段為項目臨時將屬性遷移至新的配置方式。

有關 Spring Boot 2.0 更詳細的遷移指南,可以保持關注我們正在翻譯的官方文檔:

https://www.oschina.net/translate/spring-boot-2-0-migration-guide

歡迎有興趣的開發者一起參與翻譯~!

下面我們來看看 Spring Boot 2 值得關注的新特性。

支持 Java 9

Spring Boot 2 最值得期待的新功能莫過於對 Java 9 的正式支持,現在要求最低的 JDK 版本是 Java 8,這意味著不可以使用 JDK 7 或更舊的版本運行 Spring Boot 2。


Spring Framework 5.0 現已與 Spring Boot 集成。Spring Framework 5.0 一些有趣的功能:

支持 JDK 9 和 Java EE 8 級別的 API(如 Servlet 4.0)

與 Reactor 3.1, JUnit 5, 和 Kotlin 語言的全面集成

帶來了許多函數式 API 變體 (functional API variants)

響應式堆棧 Web 框架 —— Spring WebFlux

完全支持 JUnit 5 Jupiter,因此可以在 JUnit 5 中編寫測試

添加對 @Nullable 和 @NotNull 註解的支持,以在編譯時而不是運行時處理空指針異常

Spring Security

雖然 Spring Security 並非是 Spring Boot 的正式組成部分,但這裡仍值得一提,因為它能與 Spring Framework 5.0 很好地搭配使用。最新的 Spring Security 5 提供了超過 400 多項的功能增強和錯誤修復。有以下值得關注的新功能:

用戶可通過 OAuth 2.0 provider 使用現有帳戶進行身份驗證

與 Spring Framework 5 一樣,Spring Security 5 也添加了對響應式編程的支持

以更現代的方式完成對密碼的編碼

@ConditionalOnBean

從 Spring Boot 1.x 遷移到 2.x 時需要考慮的重要一點是,當確定條件是否滿足時,@ConditionalOnBean 註解現在使用邏輯 AND 而不是邏輯 OR 來表示。

對 WebFlux 和 WebFlux.fn 的支持

Spring Boot 2.0 為響應式的 Spring Web 框架提供了一個新的啟動器 — spring-boot-starter-webflux,spring-boot-starter-webflux 本身包含 WebFlux,再加上 Reactor Netty 作為默認的 Web 引擎(spring-boot-starter-reactor-netty)。

可以使用 @WebFluxTest 來測試響應式的控制器,它為 Spring MVC 提供了類似於 @WebMvcTest 的支持,而且 WebTestClient 是自動配置的。

最低支持版本的更新

Jetty 9.4

Tomcat 8.5

Hibernate 5.2

Gradle 3.4

Thymeleaf

Spring Boot 2 另一個值得關注的新特性是現已正式支持 Thymeleaf 3,包含了對 Thymeleaf 和 Spring Security Thymeleaf 依賴關係的更新。Thymeleaf 3 中值得關注的變化:

由於使用了新的解析系統,Thymeleaf 不再基於 XML

引入新的文本模板模式,它給 Thymeleaf 提供了輸出 CSS,Javascript 和純文本的功能

重寫了引擎,性能顯著提升

最後的話

Spring Boot 2 是一個重大版本,以下新增的特性或許是你選擇升級的理由:

支持 Java 9

對響應式應用更好的支持

支持 Thymeleaf 3

如果你能從這些變化中受益,不妨考慮選擇升級。另外,Spring Boot 2 還包含許多錯誤修復和性能改進,這些都是升級的重要原因。

更多內容可以查看發布說明:

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

使用 Java 9 運行 Spring Boot

如果你希望使用 Java 9 運行 Spring Boot 應用程序,這篇文章將會對你有所幫助。

注意:問題跟蹤器包含了所有未解決的關於Java 9的已知問題,所以在報告新問題前,請查看該列表。


Spring Boot 2.0 是首個支持 Java 9 的版本(同時支持 Java 8)。如果你正在你使用 1.5.0 並希望使用 Java 9,你應該升級到 2.0 版本,官方表示目前沒有計劃在 Spring Boot 1.5.x 系列上支持 Java 9。


使用 Java 9,如果你需要編譯 JDK 中的類,則需要使用 AspectJ 1.9(目前處於 RC 階段)。這是一個臨時的解決方案,因為 Aspect 1.9 GA 即將推出,而且 Spring Boot 也將升級到該版本。在大多數情況下,使用 AspectJ 1.8(Spring Boot snapshot 中的默認版本),Spring AOP 也能正常運行。


升級時可能會遇到以下情況:

Hibernate 通常需要的 JAXB 不再默認提供。你需要為你的項目添加以下依賴:


下面這些庫尚未完全支持 Java 9:

Apache Cassandra,詳情請查看#10453

除非以打包的 war 形式運行,否則 JSP TLD 會附帶有嵌入式的 Tomcat,詳情請查看#10456

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 開源中國 的精彩文章:

20 年過去了,開源如承諾那樣改變了世界嗎?
前後端分離實踐有感

TAG:開源中國 |