1. 程式人生 > >Spring Boot 2.0已釋出,來聊聊它的新特性。

Spring Boot 2.0已釋出,來聊聊它的新特性。

Spring Boot 變化

最低 Java 8

釋出一個新的主要版本給了 Spring 團隊有機會重新編譯基於 Java 8 的程式碼庫並使用其新功能。因此,Spring Boot 2.0 需要 Java 8 或更高版本,它不再支援Java 6 和 Java 7,因為它們已經達到了生命的盡頭。

支援 Java 9

Spring Boot 2 完全支援 Java 9,如果你想用 Java 9 執行 Spring Boot 應用程式,請看 Spring Boot with Java 9 .

Spring Framework 5.0

Spring Boot 2.0 的構建需要 Spring Framework 5.0。儘管 Spring 5 自2017 年 9 月開始普遍上市,但大多數專案可能會在 Spring Boot 2.0 正式釋出時開始採用它。Spring 5 引入了一些很好的改進,其中最值得注意的新功能之一是 Reactive Stack。

內嵌的 Servlet 容器

Jetty:最低版本 9.4
Tomcat:最低版本 8.5
TLS 配置

可以使用 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進行掃描。

推薦一個交流學習群:697579751 裡面會分享一些資深架構師錄製的視訊錄影:有Spring,MyBatis,Netty原始碼分析,高併發、高效能、分散式、微服務架構的原理,JVM效能優化這些成為架構師必備的知識體系。還能領取免費的學習資源,目前受益良多:

這裡寫圖片描述