1. 程式人生 > >2-0 Spring Boot 2.0 新特性:基礎設施變化

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 連線池,只需將以下內容新增到配置中:

  1. spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource

資料庫遷移

liquibase 和 flyway 配置鍵被移動到 spring namespace, 即分別為 spring.liquibasespring.flyway

Flyway/Liquibase 靈活配置

如果僅提供自定義 urluser,則自動配置將重用標準資料來源屬性而不是忽略它們。這允許你僅使用所需的資訊為遷移目的建立自定義資料來源。

檢測資料來源初始化

如果 Flyway 或 Liquibase 正在管理資料來源,並且你使用的是嵌入式資料庫,則 Spring Boot 2 會自動關閉 Hibernate 的自動 DDL 功能。

資料庫初始化器

僅當使用嵌入式資料庫時,預設情況下會發生 Spring Batch、Spring Integration、 Spring Session、 Quartz 資料庫初始化。 enable 屬性已被替換為更具表現力的列舉。例如,如果要始終執行 Spring Batch 初始化,可以設定:

  1. 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 命名策略對於高階場景,您可以定義 ImplicitNamingStrategyPhysicalNamingStrategy 在上下文中用作常規 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,以使開發者體驗一致。

測試改進

ConverterGenericConverter 會自動使用 @WebMvcTest@WebFluxTest 進行掃描。

                                                                               微信公眾號: 

                                               

                                                                             JAVA程式猿成長之路

                                                       分享學習資源,學習方法,記錄程式設計師生活。