Spring Boot 2.0已發佈,來聊聊它的新特性。

Spring Boot 變化

最低 Java 8node

發佈一個新的主要版本給了 Spring 團隊有機會從新編譯基於 Java 8 的代碼庫並使用其新功能。所以,Spring Boot 2.0 須要 Java 8 或更高版本,它再也不支持Java 6 和 Java 7,由於它們已經達到了生命的盡頭。react

支持 Java 9
Spring Boot 2 徹底支持 Java 9,若是你想用 Java 9 運行 Spring Boot 應用程序,請看 Spring Boot with Java 9 .redis

Spring Framework 5.0
Spring Boot 2.0 的構建須要 Spring Framework 5.0。儘管 Spring 5 自2017 年 9 月開始廣泛上市,但大多數項目可能會在 Spring Boot 2.0 正式發佈時開始採用它。Spring 5 引入了一些很好的改進,其中最值得注意的新功能之一是 Reactive Stack。spring

內嵌的 Servlet 容器數據庫

Jetty:最低版本 9.4
Tomcat:最低版本 8.5緩存

TLS 配置tomcat

可使用 server.ssl.*
屬性爲你的 WebFlux 應用 配置 SSL,Tomcat、 Jetty、Undertow 和 Reactor Netty 都支持此配置。性能優化

支持 HTTP/2服務器

Spring Boot 還可讓你的 MVC 或 WebFlux 應用經過設置 server.http2.enabled 來使用 HTTP/2。它支持 Tomcat、Undertow 和 Jetty。這取決於所選的服務器、JDK 及其餘條件。架構

- 文檔: Spring Boot 配置 HTTP2
構建

  • Maven:Maven 項目默認使用 -parameters 編譯器標誌進行編譯。
  • Gradle:Spring Boot 須要 Gradle 4.x. Spring Boot Gradle
    插件,它已經在很大程度上被重寫,以實現許多重大改進許多重大改進。你能夠在其 參考文獻 和 API文檔 中閱讀關於插件功能的更多信息。

配置 Gradle BootRun

BootRun 任務提供了配置應用程序參數(args)和 JVM 參數(jvmargs)的屬性,經過 execspec可使用更高級的配置。有關更多詳細信息,請參閱 Gradle插件文檔。根據用戶的反饋,BootRun 任務再次成爲 Gradle 的 JavaExec 任務的一個子類。它能夠像其餘任何 JavaExec 任務同樣進行配置。

JDBC/ORM 變化

默認數據庫鏈接池

默認鏈接池已從 Tomcat 更改成 HikariCP。若是你在 tomcat-jdbc的環境中使用 Hikari,則能夠刪除 spring.datasource.type 。一樣,若是你想繼續使用 tomcat 鏈接池,只需將如下內容添加到配置中:數據庫遷移liquibase 和 flyway 配置鍵被移動到 spring namespace,即分別爲 spring.liquibase 和 spring.flywayFlyway/Liquibase 靈活配置若是僅提供自定義 url 或 user,則自動配置將重用標準數據源屬性而不是忽略它們。這容許你僅使用所需的信息爲遷移目的建立自定義數據源。

檢測數據源初始化

若是 Flyway 或 Liquibase 正在管理數據源,而且你使用的是嵌入式數據庫,則 Spring Boot 2 會自動關閉 Hibernate 的自動 DDL 功能。

數據庫初始化器

僅當使用嵌入式數據庫時,默認狀況下會發生 Spring Batch、Spring Integration、 Spring Session、 Quartz 數據庫初始化。enable屬性已被替換爲更具表現力的枚舉。例如,若是要始終執行 Spring Batch 初始化,能夠設置:數據庫初始化數據源初始化僅針對嵌入式數據源啓用,而且只要你使用生產數據庫就會關閉。此外,新的 spring.datasource.initialization-mode(替換spring.datasource.initialize)提供了更多控制。數據源指標檢測工具負責視全部可用的數據源,併爲每一個數據源發佈度量標準(最小值、最大值和使用率)。可配置的 JPA 映射資源能夠經過 spring.jdbc.template自定義 Spring Boot 自動配置的 JdbcTemplate。此外,自動配置的 NamedParameterJdbcTemplate在幕後重用了 JdbcTemplate。

Hibernate

Hibernate 的最低支持版本是5.2。閱讀 hibernate 5.2遷移指南 以瞭解如何升級。

支持自定義 Hibernate 命名策略

對於高級場景,您能夠定義 ImplicitNamingStrategy 或 PhysicalNamingStrategy 在上下文中用做常規 Bean。

Hibernate 屬性定製

經過暴露 HibernatePropertiesCustomizer,能夠更加細緻地定製 Hibernate 使用的屬性。

NOSQL

CassandraThe spring.data.cassandra exposes pooling options.

響應式 Couchbase 支持

Spring Data Reactive Repositories 可用於 Couchbase,而且能夠經過spring-boot-starter-data-couchbase-reactive 輕鬆用。

InfluxDB

若是設置了 InfluxDB Java客戶端和 spring.influx.url,則會自動配置 InfluxDB 客戶端。對憑證的支持也是可用的。運情況端點能夠監視InfluxDB 服務器。

Redis 緩存配置

能夠暴露RedisCacheConfiguration 控制 RedisCacheManager。還引入了新的註釋 @dataredistest。
Elasticsearch
Spring Boot 2 從如今開始須要 Elasticsearch 5.4 。 Elastic’s announcement that embedded Elasticsearch is no longer supported,NodeClient 的自動配置已被刪除。一個 TransportClient 能夠經過使用 spring.data.elasticsearch.cluster-nodesto 來自動配置一個或多個要鏈接的節點的地址。

Mongo 客戶端自定義

能夠經過定義一個類型爲 MongoClientSettingsBuilderCustomizer 的bean 來將高級定製應用於 Spring Boot 自動配置的MongoDB 客戶端。

測試

Mockito 1.x

Mockito 1.x 再也不支持 @ MockBean 和 @ SpyBean。若是你不使用 spring-boot-starter-test 來管理你的依賴關係,你應該Mockito2.x.

Kotlin Extensions for TestRestTemplate

Kotlin RestTemplate 擴展也可用於 TestRestTemplate,以使開發者體驗一致。
測試改進Converter和 GenericConverter 會自動使用 @WebMvcTest和 @WebFluxTest進行掃描。

推薦一個交流學習羣:478030634 裏面會分享一些資深架構師錄製的視頻錄像:有Spring,MyBatis,Netty源碼分析,高併發、高性能、分佈式、微服務架構的原理,JVM性能優化這些成爲架構師必備的知識體系。還能領取免費的學習資源,目前受益良多:
圖片描述

相關文章
相關標籤/搜索