Spring Boot 2.0 のリリースが2/20に予定されています。
M7までのリリースノートが出ているので、紹介します。
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Release-Notes
M3までのリリースノートはこちら。
Spring Boot 2.0.0 M4
- Actuator関連の変更
- spring-boot-actuatorとspring-boot-actuator-autoconfigureのモジュールに分割された
- Micrometerによるメトリクス実装の置き換え
- 出力フォーマットの変更
- デフォルトでWebエンドポイントが無効化された
- 設定名の変更
- Jolokiaエンドポイントがデフォルトで無効化された
- Security関連の変更
- ビルド関連
- Gradle 4.xが必須となった
- パラメータの名前を保持するためのコンパイラパラメータ
-parameters
が付与されるようになった
- Liquibase/Flywayの設定名がspring配下に移動された
- @AutoConfigureOrderのデフォルト値が0に変更された
- 設定値移行のためにlevel=errorのメタデータを追加
- 組み込みDBのDataSourceでLiquibase/Flywayを使用している場合、Hibernateの自動DDLが無効化されるようになった
- 以下に対するDB初期化が、組み込みDBの場合だけ自動実行されるようになった
- Spring Batch, Spring Integration, Spring Session, Quartz
- spring.batch.initialize-schema=always などで再有効化が可能
- auto-configurationのテストを容易にするための新しいテストモデルへの移行
- Java9への対応が開始された
Spring Boot 2.0.0 M5
- Surefireのテスト対象パターンが、Surefireのデフォルトに変更された
- JUnit5を使用している場合は、Surefire2.19.1にダウングレードする必要がある
- RedisのデフォルトクライアントがJedisからLettuceに変更された
- OAuth 2.0 サポートが Spring Securityに移行された
- @MockBeanや@SpyBeanについて、Mockito 1.xから2.xへ移行する必要がある
- GradleのBootRunタスクについて、argsとjvmArgsが追加された
- Spring BootのCIやリリースがconcourse.ciに移行された(大部分のユーザには影響なし)
- Metrics実装が[Micrometer]http://micrometer.io/に変更された
- JSONバインディングとして、JSON-Bがサポートされた
- Spring Sessionのエンドポイントが/application/sessionsで提供されるようになった
Spring Boot 2.0.0 M6
- Actuator設定がmanagement.*からmanagement.server.*に変更された
- management.server.portを設定した場合だけ、management.server.context-pathが有効になるようになった
- management.endpoints.web.base-pathが追加された
- spring.config.locationの設定が修正された
- デフォルトの参照場所として追加されるのでは無く、参照場所を置き換えられるようになった
- 以前と同じ意味で使用したい場合は、spring.config.additional-locationを使用すること
- JPAが有効でspring.jpa.open-in-viewが明示的に指定されていない場合、警告が表示されるようになった
- OSIV/OEMIVは一般的にアンチパターンであるため
- Gradleビルドにおいて、mainClassName設定がBootRun,BootJar,BootWarで参照されるようになった
- バリエーションを含む@ConfigurationPropertiesオブジェクトに対して、@Validatedアノテーションが必須になった
- DataSourceについて、組み込みDBの場合だけDB初期化が実行されるようになった
- 組み込みDB以外についてはデフォルトでは初期化されない
- spring.datasource.initialization-modeで制御できる
- Spring MobileのAuto-configurationが削除された
- WebFluxのエラーハンドリングが、MVCのそれと同じようになった
- WebFluxについても、TLSやHTTP/2の設定が可能になった
- JPAマッピングのために spring.jpa.mapping-resources設定が追加された
- @KafkaListenerアノテーションについて、@SendToのサポートが追加された
- デフォルトで、データソースに関連する全てのメトリクスが利用できるようになった
- Kotlin拡張 runApplication が追加された
Spring Boot 2.0.0 M7
- Actuatorのデフォルトパス(management.endpoints.web.base-path)が/applicationから/actuatorに変更された
- statusエンドポイントが削除され、healthエンドポイントへ統合された
- healthエンドポイントはデフォルトではstatusのみを表示する
- 詳細出力を行うためには、management.endpoint.health.show-detailsを設定する
- Actuatorエンドポイントのエクスポーズ設定がシンプルになった
- management.endpoints.web.expose=*
- management.endpoints.web.exclude=env
- /actuator/conditionsにおいてAuto-configurationリポートが出力されるようになった
- spring.jackson.serialization.write-dates-as-timestampsのデフォルト値がfalseに変更された
- 意図しない副作用が発生したため、spring-boot-starter-jsonからjackson-module-kotlinが削除された
- リアクティブパターンをサポートするため、SpringDataリポジトリの有効化方法が変更された
- Cassandraを例に取ると以下のようになる
- spring.data.cassandra.repositories.type=BLOCKING | NONE | REACTIVE | ALL
- 外部ライブラリcommons-digesterが管理対象外となったため、pom.xmlにおいてversion要素が必須となった
- バッチジョブを実行するCommandLineRunnerの起動順序が0に設定された
- 訳注:元のissueはこれでしょうか。実行タイミングの保証という意図だと思われます。
- 外部ライブラリSpring SocialのAuto-configurationと依存が削除された
- GradleのBootRunタスクがJavaExecタスクのサブクラスとなった
- devtoolsによる再起動で、auto-configurationの評価差分ログが出力されるようになった
- スケジュールタスク表示のための新しいエンドポイント/actuator/scheduledtasksが追加された
- 期間設定のプロパティについて、Java Durationタイプのsuffixが設定できるようになった
- server.session.cookie.max-age=2d →2日間
- suffixが無い場合は、既存の挙動が維持される
- welcomeページについて、まず静的コンテンツ位置からindex.htmlを探索し、無い場合にindexテンプレートを表示するようになった
- spring.cache.redis.*によりRedisキャッシュの設定が変更できるようになった
- Hibernateの命名をImplicitNamingStrategy, PhysicalNamingStrategyによりカスタマイズできるようになった
- リアクティブパターンのためのCouchbase starter : spring-boot-starter-data-couchbase-reactiveが追加された
- Kotlin拡張 TestRestTemplateExtensions が追加された
- 起動時ログにコンテキストパスが出力されるようになった
- @WebMvcTest/@WebFluxTestにおいて、Converter/GenericConverterがスキャンされるようになった
所感
さらにRC1とRC2のリリースも予定されています。例によって、正式版のリリースは2/20から遅れるでしょう。
バージョンアップ体験記はそのうち書きます。ブランチはプッシュ済。
変更履歴