當前位置:
首頁 > 最新 > Spring Boot 2.0 新特性詳解

Spring Boot 2.0 新特性詳解


背景

在 3 月 1 號,Spring Boot正式發布,這是 Spring Boot1.0 發布 4 年之後第一次重大修訂,因此有多的新功能和特性值得大家期待!下面帶大家了解下 Spring Boot 2.0 中的新特性。


由於 Spring Boot 2.0 的改變幅度有點大,所以升級現有的程序可能會比平常更大一些。

如果要升級可以參考我明天要發布的文章:Spring Boot 2.0 遷移指南

如果您目前正在運行較早版本的 Spring Boot,我們強烈建議您在遷移到 Spring Boot 2.0 之前先升級到 Spring Boot 1.5。

小技巧:檢查 配置更改日誌 來獲取配置更改的完整描述。


Spring Boot 2.0 要求 Java 8 作為最低版本。許多現有的 API 已更新,以利用 Java 8 的特性,例如:介面上的默認方法,函數回調以及新的 API,如。如果您當前正在使用 Java 7 或更早版本,則在開發 Spring Boot 2.0 應用程序之前,您需要升級您的 JDK。

Spring Boot 2.0 通過了在 JDK 9 下的測試,可以在 JDK 9 下正常運行,。我們所有的 jar 包都在模塊系統兼容性的清單中附帶了自動模塊名稱條目。


Spring Boot 2.0 建立在 Spring Framework 5 之上,並且需要 Spring Framework 5 。你可以通過 What"s New in Spring Framework 5.x 了解 Spring 5 的新特性。並在繼續之前查看其升級指南 Upgrading to Spring Framework 5.x。

我們已儘可能升級到其他第三方庫的最新穩定版本。 本版本中一些顯著的依賴性升級包括:

Tomcat 8.5

Flyway 5

Hibernate 5.2

Thymeleaf 3


Spring 產品組合中的許多項目現在都為開發反應式應用程序提供一流的支持。反應性應用程序是完全非同步和非阻塞的。它們旨在用於事件循環執行模型(而不是更傳統的每個請求線程執行模型)。Spring 框架參考文檔中的「Web 反應堆棧」部分為這個主題提供了一個很好的入門。

Spring Boot 2.0 通過自動配置和啟動器 POM 完全支持反應式應用。Spring Boot 的內部本身也在必要時進行了更新,以提供反應性的反應(最明顯的是我們的嵌入式伺服器支持)。

Spring WebFlux&WebFlux.fn

Spring WebFlux 是 Spring MVC 的完全非阻塞反應式替代方案。Spring Boot 為基於注釋的 Spring WebFlux 應用程序以及 WebFlux.fn 提供了自動配置,WebFlux.fn 提供了更實用的樣式 API。

要開始,請添加 到 POM,它將提供由嵌入式 Netty 伺服器支持的 Spring WebFlux。

Reactive Spring Data

在底層技術支持的情況下,Spring Data 還為反應式應用程序提供支持。目前 Cassandra,MongoDB,Couchbase 和 Redis 都有反應式 API 支持。

Spring Boot 包含針對這些技術的特殊 starter-POMs,可為您提供啟動所需的一切。例如,包括對反應性 mongo 驅動程序和項目反應堆的依賴性。

Reactive Spring Security

Spring Boot 2.0 可以充分利用 Spring Security 5.0 來保護您的反應式應用程序。當 Spring Security 位於類路徑中時,會為 WebFlux 應用程序提供自動配置。

使用 WebFlux 的 Spring Security 訪問規則可以通過。如果你之前整合過 Spring MVC 和 Spring Security,應該會感到非常熟悉。有關更多詳細信息,請參閱 Spring Boot 參考文檔和 Spring Security 文檔。

嵌入式 Netty 伺服器

由於 WebFlux 不依賴於 Servlet API,我們現在可以首次為 Netty 作為嵌入式伺服器提供支持。該 啟動 POM 將拉取 Netty 4.1 和 Ractor Netty 。

注意:您只能將 Netty 用作反應式伺服器。不提供阻止 servlet API 支持。


為 Tomcat,Undertow 和 Jetty 提供 HTTP / 2 支持。支持取決於所選的 Web 伺服器和應用程序環境(因為 JDK 8 不支持該協議)。

如何配置 HTTP/2,請參考 官方文檔 。


在 Spring Boot 2.0 中,用於綁定屬性的機制已經完全徹底修改。我們藉此機會收緊了鬆散綁定的規則,並修復了 Spring Boot 1.x 中的許多不一致之處。

新的API 也可以直接在你自己的代碼之外使用。例如,下面將結合到的對象:

配置源可以像這樣在 YAML 中表示:

有關更新綁定規則的更多信息,請參閱此Wiki頁面。

配置起源

YAML 文件和被 Spring Boot 載入的 Properties 文件現在包含信息,可幫助您跟蹤項目從何處載入的信息。有些 Spring Boot 特性利用了這個信息可以在適當的時候展示出來。

例如,綁定失敗時拋出的類是一個。這意味著原始信息可以很好地從故障分析器中顯示出來。

另一個例子是執行器端點,當它有可用時包含了原始信息。下面的代碼片斷顯示該屬性來自 jar 包中的 application.properties 文件的第 1行,第 27 列。

轉換器支持

Binding 利用了一個新的 類,它提供了一些對屬性綁定特別有用的額外轉換器。最引人注目的是轉換器的類型和分隔字元串。

該轉換器允許在任一 ISO-8601 格式中指定的持續時間,或作為一個簡單的字元串(例如,10 分鐘)。現有的屬性已更改為始終使用。該注釋通過設置如果沒有指定所使用的單元確保向後兼容性。例如,Spring Boot 1.5 中需要秒數的屬性現在必須確保一個簡單的值,例如實際使用的值。

分隔字元串轉換允許您將簡單綁定到或不必分割逗號。例如,LDAP 屬性用 ,所以 LDAP DN(通常包含逗號)不會被錯誤解釋。


Spring Boot 的 Gradle 插件已在很大程度上進行了重新編寫,以實現許多重大改進。您可以在其參考文獻和 API文檔中閱讀關於插件功能的更多信息。

Spring Boot 現在需要 Gradle 4.x. 如果您要升級使用 Gradle 的項目,請查看遷移指南。


Spring Boot 2.0 現在包含對 Kotlin 1.2.x 的支持,並提供了 ,一個使用 Kotlin 運行 Spring Boot 應用程序的方法。我們還公開和利用了 Kotlin 對其他 Spring 項目(如Spring Framework,Spring Data 和 Reactor)已添加到其最近版本中的支持。

有關更多信息,請參閱參考文檔的Kotlin支持部分。


在 Spring Boot 2.0 中 Actuator endpoints 有很大的改進。所有 HTTP Actuator endpoints 現在都在該路徑下公開,並且生成的 JSON 有效負載得到了改進。

我們現在也不會在默認情況下暴露很多端點。如果您要升級現有的 Spring Boot 1.5 應用程序,請務必查看遷移指南並特別注意該屬性。

Actuator JSON

Spring Boot 2.0 改進了從許多端點返回的 JSON 有效負載。

現在許多端點都具有更精確地反映底層數據的 JSON。例如,終端(在Spring Boot 1.5中)現在有一個頂級密鑰來將結果分組。

現在還使用 Spring REST Docs 生成了廣泛的 REST API 文檔,並隨每個版本發布。

Jersey and WebFlux 支持

除了支持 Spring MVC 和 JMX,您現在可以在開發 Jersey 或 WebFlux 應用程序時訪問執行器端點。Jersey 支持通過自定義 Jersey 提供,WebFlux 使用自定義。

Hypermedia links

該端點現在提供了一個 HAL 格式的響應提供鏈接到所有活動端點(即使你沒有 Spring HATEOAS 在classpath)。

Actuator @Endpoints

為了支持 Spring MVC,JMX,WebFlux 和 Jersey,我們為 Actuator @Endpoints 開發了一種新的編程模型。該註解可以與, 和 組合使用開發 endpoints。

您還可以使用或編寫技術特定的增強功能到 endpoints。詳細信息請參閱更新的參考文檔。

Micrometer

Spring Boot 2.0 不再提供自己的指標 API。相反,我們依靠 micrometer.io 來滿足所有應用程序監視需求。

Micrometer 包括尺寸指標的支持,當與尺寸監測系統配對時,尺寸指標可以有效訪問特定的指定度量標準,並且可以在其尺寸範圍內向下鑽取。

指標可以輸出到各種系統和開箱即用的 Spring Boot 2.0,為 Atlas,Datadog,Ganglia,Graphite,Influx,JMX,New Relic,Prometheus,SignalFx,StatsD 和 Wavefront 提供支持。另外還可以使用簡單的內存中度量標準。

集成隨 JVM 指標(包括 CPU,內存,線程和 GC),Logback,Tomcat,Spring MVC&提供。

有關更多詳細信息,請參閱參考文檔的更新「指標」部分。

除了上面提到的 支持外,在數據領域還進行了其他一些更新和改進。

HikariCP

Spring Boot 2.0 中的默認資料庫池技術已從 Tomcat Pool 切換到 HikariCP。我們發現 Hakari 提供了卓越的性能,我們的許多用戶更喜歡 Tomcat Pool。

初始化

資料庫初始化邏輯在 Spring Boot 2.0 中已經合理化。Spring Batch,Spring Integration,Spring Session 和 Quartz的初始化現在僅在使用嵌入式資料庫時才會默認發生。該屬性已被替換為更具表現力枚舉。例如,如果你想一直執行 Spring Batch 的初始化,您可以設置。

如果 Flyway 或 Liquibase 正在管理您的 DataSource 的模式,並且您正在使用嵌入式資料庫,Spring Boot 現在會自動關閉 Hibernate 的自動 DDL 功能。

JOOQ

Spring Boot 2.0 現在基於 DataSource 自動檢測 JOOQ 方言(類似於為 JPA 方言所做的)。是新引入的註解用來簡化那些只有 JOOQ 必須被使用的測試。

JdbcTemplate

Spring Boot 自動配置的 現在可以通過 屬性進行自定義。此外,自動配置的內容會重用。

Spring Data Web 配置

Spring Boot 公開了一個新的配置名稱空間,可以輕鬆配置分頁和排序。

InfluxDB

Spring Boot 現在自動配置開源時間序列資料庫 InfluxDB。要啟用 InfluxDB 支持,您需要設置一個屬性,並將其包含在您的類路徑中。

Flyway/Liquibase 靈活配置

如果僅提供自定義或屬性,則 Flyway 和 Liquibase 的自動配置現在將重用標準數據源屬性,而不是忽略它們。這使您可以創建一個自定義的數據源,僅用於所需信息的遷移。

Hibernate

現在支持自定義 Hibernate 命名策略。對於高級場景,現在可以在上下文中定義或使用常規 bean。

現在也可以通過公開bean 來更加細緻地定製 Hibernate 使用的屬性。

MongoDB 客戶端自定義

現在可以通過定義一個類型的 bean 來為 Spring Boot 自動配置的 Mongo 客戶端應用高級定製。

Redis

現在可以使用屬性配置 Redis 的緩存默認值。


除了上面提到的 WebFlux 和 WebFlux.fn 支持之外,還在開發 Web 應用程序時進行了以下改進。

上下文路徑記錄

當使用嵌入式容器時,當您的應用程序啟動時,上下文路徑將與 HTTP 埠一起記錄。例如,嵌入式 Tomcat 現在看起來像這樣:

Web過濾器初始化

Web 過濾器現在在所有支持的容器上急切地初始化。

Thymeleaf

Thymeleaf 初始化現在包括,提供類型支持。

JSON 支持

新的起始者收集必要的位以讀取和寫入 JSON。它不僅提供了與Java8 工作時,也是有用的模塊:,和。這個新的起動器現在被用於之前定義的地方。

如果您更喜歡 Jackson 之外的其他產品,我們對 GSON 的支持在 Spring Boot 2.0 已經大大提高。我們還引入了對 JSON-B 的支持(包括 JSON-B 測試支持)。


自動配置支持目前包含了 Quartz Scheduler。我們還添加了新的 初始化 POM。

您可以使用內存中或完整的基於 JDBC 的存儲。所有,並從你的 Spring應用程序上下文豆將自動註冊。

有關更多詳細信息,請閱讀參考文檔的新「Quartz Scheduler」部分。


對 Spring Boot 2.0 中提供的測試支持進行了一些補充和調整:

已添加新注釋以支持 WebFlux 應用程序的「切片」測試。

和豆類現在自動掃描和。

已經添加了一個注釋來提供一個bean 供測試使用。注釋會自動應用於測試。

增加了一個新的測試實用程序,可以很容易地測試您的自動配置。我們已將大部分內部測試套件移至此新模型。詳細信息請參閱更新的文檔。


除了上面列出的變化外,還有很多小的調整和改進,包括:

現在在確定是否滿足條件時使用邏輯而不是邏輯。

無條件類現在包含在自動配置報告中。

該CLI 應用程序現在包括可用於創建 Spring Security 的兼容散列密碼命令。

計劃任務(即 )可以使用執行器端點進行審查。

該驅動器終端現在允許你重新設置一個記錄器級別為它的默認。

Spring Session 用戶現在可以通過執行器端點查找和刪除會話。

使用現在基於 Maven 的應用程序默認使用標誌。

我們的構建現在使用 concourse 的 CI 和我們的項目 POM 文件已被重構,使它們更簡單的。


最後,為了好玩,Spring Boot 2.0 現在支持動畫 GIF 橫幅。


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


轉載請務必註明原創地址為:http://www.54tianzhisheng.cn/2018/03/06/SpringBoot2-new-features/


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

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


請您繼續閱讀更多來自 zhisheng 的精彩文章:

TAG:zhisheng |