歡迎光臨
每天分享高質量文章

Spring Boot 2.0.0 終於正式釋出,重大修訂版本

來自:開源中國
連結:https://www.oschina.net/news/93781/spring-boot-2-0-goes-ga

北京時間 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


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。


AspectJ


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


JAXB


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


Hibernate 通常需要的 JAXB 不再預設提供。你需要為你的專案新增以下依賴:


或者你可以新增 java.xml.bind 模組以使用 Java 9 恢復該功能。


Testing


使用 Java 9 進行測試時,最新的 maven-surefire-plugin 版本(2.20.1)引入了回歸錯誤,你可以降級到 2.20.0,或顯式新增一個模組以防止引入 java.se.ee:


已知的限制


下麵這些庫尚未完全支援 Java 9:


  • Apache Cassandra,詳情請檢視 #10453

  • 除非以打包的 war 形式執行,否則 JSP TLD 會附帶有嵌入式的 Tomcat,詳情請檢視 #10456


●本文編號626,以後想閱讀這篇文章直接輸入626即可

●輸入m獲取到文章目錄

推薦↓↓↓

Linux學習

更多推薦18個技術類公眾微信

涵蓋:程式人生、演演算法與資料結構、駭客技術與網路安全、大資料技術、前端開發、Java、Python、Web開發、安卓開發、iOS開發、C/C++、.NET、Linux、資料庫、運維等。

贊(0)

分享創造快樂