最新のリリースノートを和訳しましたので、こちらもご覧下さい。
Spring Boot 2.0 M7 リリースノート和訳 (https://blog.afnf.net/blog/96)
Spring Boot 2.0 のリリースが11/20に予定されています。
M1からM3のリリースノートが出ているので、紹介します。
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Release-Notes
Spring Boot 2.0.0 M1
- 1.5で非推奨となったクラス・メソッド等の削除
- Java8以降が必須となり、Java6/7はサポート対象外となった
- 組み込みWebサーバのパッケージ変更
- Actuatorのデフォルトパスが、/application に変更された
- 例えばエンドポイント
/info
は /application/info
となる
- management.context-pathでオーバーライド可能
- @ConditionalOnBean の判定が、論理和から論理積に変更された
- 1.5で非推奨となっていたRemote CRaSH shellが削除された
- Spring Loaded のサポートが削除された
- キャッシュ実装のHazelcastInstanceについて、auto-configureが削除された
- デフォルトのコネクションプール実装がTomcat JDBC Connection PoolからHikariCPに変更された
- spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource で元に戻せる
- サーブレットフィルタのディスパッチタイプがDipatcherType.REQUESTに変更された
- Servlet仕様のデフォルトに合わせるのが目的
FORWARD
, INCLUDE
, ASYNC
が削除されたことと同じらしい
- Spring Security、Spring Sessionのサーブレットフィルタのディスパッチタイプが
ASYNC
, ERROR
, REQUEST
に変更された
- ちなみに、Spring Session 2.0ではセッションストレージとしてのMongoとGemFireのサポートが削除されている
- サードパーティライブラリの更新
- Jetty 9.4
- Tomcat 8.5
- Hibernate 5.2
- Gradle 3.4
- SendGridのJavaクライアントの最小サポートバージョンが3.2となった
- Spring WebFluxの新規サポートにより、spring-boot-starter-mustache と spring-boot-starter-thymeleaf が、spring-boot-starter-web に依存しないようになった。
- つまり spring-boot-starter-web と spring-boot-starter-webflux のどちらかをdependencyに追加する必要がある
- Solrに対するヘルスチェックの属性名が、文字列の solrStatus から intの status に変更された
- AOPのProxyingストラテジのデフォルトが、JDK Dynamic Proxy から CGLIB Proxy に変更された
- 以前のJavaProxyに戻すためには、spring.aop.proxy-target-class を false に設定する
- Spring Boot CLIによるテスト実行のサポートが削除された
- @ConfigurationProperties アノテーションの ignoreNestedProperties 属性が削除された
- spring.http.multipart.* が spring.servlet.multipart.* にリネームされた
- Mustacheテンプレートの拡張子が標準的な
.mustache
に変更された
- 以前の設定に戻すには、 spring.mustache.suffix を
.html
に設定する
- Spring Framework 5.0 が必須となった
- Relaxed Binding(緩やかな規則のバインディング)の変更
- WebFluxフレームワークがサポートされた
- spring-boot-starter-webflux starterが設定されると、WebエンジンはデフォルトでReactor Nettyになる
- テスト用の @WebFluxTest アノテーションも追加された
- reactive向けに以下のauto-configuration が追加された
- MongoDB (spring-boot-starter-data-mongodb-reactive)
- Redis (spring-boot-starter-data-redis-reactive)
- Cassandra (spring-boot-starter-data-cassandra-reactive)
- @SpringBootTestが使用されている場合、WebTestClient が TestRestTemplate と同じように自動設定される
- Gradleプラグインが大幅に書き直された
- Gradleのjar/war作成タスク bootRepackage が bootJar と bootWar に置き換えられた
- Gradleのdependency management pluginが使用されなくなる代わりに、spring-boot-dependencies bomが適用されるようになった。
- SpringApplication.setWebEnvironment(boolean)が非推奨となり、SpringApplication.setWebApplicationType(enum)が追加された
- spring.main.web-environment も spring.main.web-application-type に移行された
Spring Boot 2.0.0 M2
- Actuatorエンドポイント /loggers のステータスコードが200から204に変更された
- Elasticsearchが5.4にアップグレードされたことにより、組み込みモードが廃止となった
- これにより、NodeClient が削除された
- TransportClient の接続先が spring.data.elasticsearch.cluster-nodes で設定出来るようになった
- spring-boot-starter-quartz starterによる Quartz Schedulerのサポート追加
- Spring Data Webのページングやソート設定向けに、spring.data.web.* の設定が追加された
- spring-boot-starter-json starterにより、以下のMavenモジュールがサポートされる
- jackson-databind
- jackson-datatype-jdk8
- jackson-datatype-jsr310
- jackson-module-parameter-names
- Thymeleaf starterが thymeleaf-extras-java8time モジュールを含むようになった
- spring.influx.url が設定されている場合、InfluxDBクライアントが自動設定されるようになった
- JdbcTemplate 設定向けに、spring.jdbc.template.* の設定が追加された
- DataSource 設定を元に、jOOQ dialectが自動検出されるようになった(JPA dialectと同様の動き)
- @JooqTest アノテーションの追加
- @DataRedisTest アノテーションの追加
- MongoClientSettingsBuilderCustomizer beanにより、Mongo clientがカスタマイズできるようになった
- Cassandraのプーリング設定向けに、spring.data.cassandra.* の設定が追加された
- Kafkaにおいて ConsumerRecord を一度に処理するための設定 spring.kafka.listener.type=batch が可能になった
- Undertowにおいて、コンテナ起動時にサーブレットフィルタが初期化されるようになった
- autoconfig Actuatorエンドポイントに、Unconditional classesもレポート出力されるようになった
- loggers Actuatorエンドポイントによるログレベルの動的変更について、null値によるリセットが可能になった
Spring Boot 2.0.0 M3
- Mavenプラグインのプロパティにprefix
spring-boot
が必要になった
- 例えば foo プロファイルを有効にして起動する場合は以下のようになる
- 変更前:mvn spring-boot:run -Drun.profiles=foo
- 変更後:mvn spring-boot:run -Dspring-boot.run.profiles=foo
- 対象となるプロパティ一覧はこちらなど
- DevtoolsのリモートデバッグのHTTPトンネル機能が削除された
- Tomcat/Undertowに合わせるため、JettyのGET以外のレスポンスについても圧縮が有効になった
- *ReactiveWebServerFactoryの導入により、サーブレットWebサーバと同様のカスタマイズができるようになった →#9572
- Kafka設定向けに、spring.kafka.properties.* や spring.kafka.consumer.max-poll-messages の設定が追加された →PR9775
- WebClient と同じ方法で、WebTestClient のカスタマイズが可能になった →#9577
- Spring Sessionのフィルタ順序とDispatcherTypeが設定出来るようになった
- spring.session.servlet.filter-order
- spring.session.servlet.filter-dispatcher-types
Spring Boot Security 2.0
Spring Boot 1.x時代のSecurity設定からかなり変更があるようで、別ページにまとめられています。
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-Security-2.0
こちらも後日紹介します。
所感
メジャーバージョンアップだけあって沢山の変更があります。
バージョンアップ体験記はそのうち書きます。とりあえずThymeleafが全滅。
変更履歴