2-0 Spring Boot 2.0 新特性:基礎設施變化
轉載至微信公眾號 SpringForAll社群
※ 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 連線池,只需將以下內容新增到配置中:
-
spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource
資料庫遷移
liquibase 和 flyway 配置鍵被移動到 spring namespace, 即分別為 spring.liquibase
和 spring.flyway
Flyway/Liquibase 靈活配置
如果僅提供自定義 url
或 user
,則自動配置將重用標準資料來源屬性而不是忽略它們。這允許你僅使用所需的資訊為遷移目的建立自定義資料來源。
檢測資料來源初始化
如果 Flyway 或 Liquibase 正在管理資料來源,並且你使用的是嵌入式資料庫,則 Spring Boot 2 會自動關閉 Hibernate 的自動 DDL 功能。
資料庫初始化器
僅當使用嵌入式資料庫時,預設情況下會發生 Spring Batch、Spring Integration、 Spring Session、 Quartz 資料庫初始化。 enable
屬性已被替換為更具表現力的列舉。例如,如果要始終執行 Spring Batch 初始化,可以設定:
-
spring.batch.initialize-schema=always
資料庫初始化
資料來源初始化僅針對嵌入式資料來源啟用,並且只要你使用生產資料庫就會關閉。此外,新的 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
Cassandra
The 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
來管理你的依賴關係,你應該升級到 Mockito 2.x.
Kotlin Extensions for TestRestTemplate
Kotlin RestTemplate
擴充套件也可用於 TestRestTemplate
,以使開發者體驗一致。
測試改進
Converter
和 GenericConverter
會自動使用 @WebMvcTest
和 @WebFluxTest
進行掃描。
微信公眾號:
JAVA程式猿成長之路
分享學習資源,學習方法,記錄程式設計師生活。