afnf.net

Spring Boot 2.0 M3 リリースノート和訳

Spring Boot Java 2017/08/24 23:43

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 の判定が、論理和から論理積に変更された
    • #5279の実例を見るとわかりやすい
  • 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 バインディングの変更
  • 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が全滅。

変更履歴

  • 2017/08/24 初版
Spring Boot Java 2017/08/24 23:43
comments (0)

blog-java2 engine (build:2017-09-13 21:46 JST)