Spring Boot 2.2 正式發布,大幅性能提升 + Java 13 支援
- 2019 年 10 月 18 日
- 筆記
之前 Spring Boot 2.2沒能按時發布,是由於 Spring Framework 5.2 的發布受阻而推遲。這次隨著 Spring Framework 5.2.0 成功發布之後,Spring Boot 2.2 也緊跟其後,發布了第一個版本:2.2.0。下面就來一起來看看這個版本都更新了些什麼值得我們關注的內容。
組件版本更新
這些Spring框架組件更新了依賴版本:
- Spring AMQP 2.2
- Spring Batch 4.2
- Spring Data Moore
- Spring Framework 5.2
- Spring HATEOAS 1.0
- Spring Integration 5.2
- Spring Kafka 2.3
- Spring Security 5.2
- Spring Session Corn
框架中涉及的第三方包也更新了依賴版本:
- Elasticsearch 6.7
- Flyway 6.0
- Jackson 2.10
- JUnit 5.5
- Micrometer 1.3
- Reactor Dysprosium
- Solr 8.0
大幅的性能提升
關於Spring Boot的性能問題是我們經常在內容平台上看到吐槽的關鍵詞。這次在Spring Boot 2.2中,針對性能這一點,做了大幅的優化。應用程式的啟動速度將變得更快,記憶體佔用也會變得更少。
同時,為了加快應用的啟動,還增加一個全局延遲初始化的配置參數spring.main.lazy-initialization
,這可以讓我們的應用更快的完成啟動動作,但是值得注意的是,延遲啟動也會有下面這些副作用:
- 應用在進行延遲初始化的時候,HTTP請求的處理會需要更長的時間
- 原本可能在啟動期出現的錯誤,將延遲到啟動的運行期間出現
Java 13的支援
由於Spring Framework 5.2增加了對Java 13的支援,所以Spring Boot 2.2也自然增加了這一特性。同時,Spring Boot 2.2對於老版本的Java 11、Java 8依然支援良好。所以,對於還在使用Java 8的用戶也可以安心的升級使用。
不可變的 @ConfigurationProperties 綁定
配置屬性現在支援基於構造函數的綁定,該綁定允許@ConfigurationProperties
註解修飾的類是不可變的。可以通過使用@ConstructorBinding
註解修飾@ConfigurationProperties
類或其構造函數之一來啟用基於構造函數的綁定。可以在配置屬性綁定提供的構造函數參數上使用@DefaultValue和@DateTimeFormat
之類的注釋。
更多詳細資訊參閱文檔:https://docs.spring.io/spring-boot/docs/2.2.0.RELEASE/reference/html/spring-boot-features.html#boot-features-external-config-constructor-binding
RSocket 支援
已為RSocket添加了自動化配置的starter實現:spring-boot-starter-rsocket
。當項目依賴了spring-security-rsocket
的時候,該starter還會自動配置Spring Security對RSocket的集成實現。
更多詳細資訊參閱文檔:https://docs.spring.io/spring-boot/docs/2.2.0.RELEASE/reference/html//spring-boot-features.html#boot-features-rsocket
健康檢查的分組支援
現在可以將Spring Boot Actuator中各種各樣的健康指標實現分組。如果將應用程式部署到Kubernetes,一個典型的需求是您可能需要不同組的健康指標來進行「liveness」和「readiness」的探測。這個時候,我們就可以通過配置屬性來定義不同的分組,比如:下面創建了一個僅具有DataSource指示器的自定義組:
management.endpoint.health.group.custom.include=db
通過訪問localhost8080/actuator/health/custom
,就可以訪問自定義的組了。
更多詳細資訊參閱文檔:https://docs.spring.io/spring-boot/docs/2.2.0.RELEASE/reference/html//production-ready-features.html#health-groups
其他更新
Release Notes中還記錄了許多其他更改和改進。讀者可以通過下方鏈接查看更多更新內容:
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.2-Release-Notes
參考資料
-
歡迎關注我的公眾號:程式猿DD,獲得獨家整理的學習資源和日常乾貨推送。
如果您對我的專題內容感興趣,也可以關注我的部落格:didispace.com