afnf.net

Spring Boot 1.4 リリースノート和訳

Spring Boot Java 2016/07/24 23:45

Spring Boot 1.4がもうすぐリリース

2016/07/27に正式リリースされるようです。

前回時点からWikiが更新されたので、和訳も更新してみました。
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-1.4-Release-Notes

参考までに、私のバージョンアップ体験記はこちら


Spring Boot 1.3 からのアップグレード

  • EOLに基づき、Log4j ver1のサポートを削除
  • starterのリネーム
    • spring-boot-starter-ws → spring-boot-starter-web-services
    • spring-boot-starter-redis → spring-boot-starter-data-redis
  • DataSourcePropertiesのget系メソッド変更
  • spring.datasourceにあったJDBC POOL設定が、実装毎の名前空間に移動した 例)spring.datasource.test-on-borrow → spring.datasource.tomcat.test-on-borrow
  • spring.jtaにあったJTA設定が、spring.jta.atomikos.propertiesに移動した 例)spring.jta.checkpoint-interval → spring.jta.atomikos.properties.checkpoint-interval
  • JPA persistence providerとして、Hibernate 5.0が使用されるようになった
    • Spring Boot 1.3はHibernate 4.3を使用していた
    • SpringNamingStrategyからSpringPhysicalNamingStrategyへの移行が必要
    • 移行コストを下げたい場合は、あまりお勧めでは無いがspring.jpa.hibernate.use-new-id-generator-mappingsをfalseに設定できる
    • 4.3系にダウングレードしたい場合は、pom.xmlの<properties>に<hibernate.version>4.3.11.Final</hibernate.version>version>`を指定する
  • @org.springframework.boot.orm.jpa.EntityScanが非推奨となった
    • @org.springframework.boot.autoconfigure.domain.EntityScanに変更する必要がある
    • 上記アノテーションでは、JPA, Neo4J, MongoDB, Cassandra, Couchbaseのためのパッケージも指定できるようになった
  • テスト系クラスの変更
    • org.springframework.boot.testパッケージの変更
    • SpringBootTestアノテーションへの移行
    • @RunWith(SpringJUnit4ClassRunner.class)→@RunWith(SpringRunner.class) への変更
  • TestRestTemplateがRestTemplateを継承しなくなった
  • spring-boot.versionプロパティが削除された
  • spring-boot-starter-integrationが整理された
  • spring-boot-starter-batch starterから組み込みDBの依存が削除された
    • 例えばhsqldbを追加する必要があるかもしれない
  • tomcat-juliモジュールがtomcat-embeddedに含まれるようになった
    • 大部分のユーザは気にしなくて良いが、Tomcatをダウングレードしたい場合は、tomcat-juliを手動で追加する必要がある
  • spring.mvc.dispatch-options-requestがデフォルトでtrueとなった
  • エンコーディングの強制設定が、リクエストだけになった
    • spring.http.encoding.force=trueにより、レスポンスにも強制できる
  • マルチパート設定が multipart.* から spring.http.multipart.* に移動された
  • server.server-headerプロパティを指定した場合にだけ、Serverヘッダが設定されるようになった
  • @ConfigurationPropertiesで生成されるのbean nameパターンが変更された
  • Jetty JNDIが spring-boot-starter-jetty starterに含まれなくなった
  • リモートシェル設定が shell.* から management.shell.* に移動された
  • spring.session.store-type設定により、Spring SessionバックエンドがRedisを含めた5種から選択可能になった
  • 起動スクリプトが決定するアプリのデフォルト識別子として、正規名(canonical name)が使用されるようになった
    • 元々はjarのシンボリックリンク名だった
    • 環境変数APP_NAMEで制御可能
  • spring-boot-starter-data-mongodb starterによるMongoDBのバージョンが2.14.2から3.2.2に変更された
  • Thymeleafはデフォルトでは2.1が使用されるが、Thymeleaf 3にも対応した(詳細
  • executable jarのレイアウト変更(Maven, Gradle, Antを使用している場合は影響なし)
  • spring-boot-starter-hornetqが非推奨となったため、spring-boot-starter-artemisに移行する必要がある

新機能と注目ポイント

  • Spring Framework 4.3への更新
  • サードパーティライブラリの更新
    • Jetty 9.3
    • Tomcat 8.5
    • Jersey 2.23
    • Hibernate 5.1
    • Jackson 2.7
    • Solr 5.5
    • Spring Data Hopper
    • Spring Session 1.2
    • Hazelcast 3.6
    • Artemis 1.3
    • Ehcache 3.1
    • Elasticsearch 2.3
    • Spring REST Docs 1.1
    • Spring AMQP 1.6
    • Spring Integration 4.3
  • spring-boot-starter-data-couchbase starterによるCouchbaseのサポート追加
  • spring-boot-starter-data-neo4j starterによるNeo4Jのサポート追加
  • Spring DataリポジトリとしてRedisが使用できるようになった
  • spring-boot-starter-jta-narayana starterによるJTAトランザクションマネージャNarayanaのサポート追加
  • Guava cachesからCaffeineへの移行推奨
  • Jest(ElasticSearchのHTTP Restクライアント実装)がクラスパスにある場合にJestClientが追加されるようになった
    • spring-data-elasticsearch starterが無くてもElasticSearchが使用できるようになった
  • 二重起動など、起動失敗時のエラー出力が明瞭になった
  • banner.gif, banner.jpg, banner.png ファイルをsrc/main/resourcesに用意しておくと、ASCIIアート化されて起動時バナーに使用される
  • RestTemplateBuilderが追加され、例えばBASIC認証が簡単に設定できるようになった
  • JsonComponentアノテーションの追加
    • シリアライズ/デシリアライズ処理の分離が簡単になった
    • JsonObjectSerializer/JsonObjectDeserializerが追加された
  • src/main/resource/public/error/404.html などにより、HTTPステータスコード毎のエラーページ・テンプレートが定義できるようになった
  • ErrorPageRegistryが追加され、サーブレットコンテナのエラーページ設定がカスタマイズできるようになった
  • OAuth2のためのPrincipalExtractorが追加された
  • Actuatorエンドポイントの改修
    • Gitコミット情報やビルド情報の出力が可能になった
    • InfoContributorによるカスタム出力
  • MetricsFilterのgauge/counterが、HTTP Methodごとにグルーピング出力できるようになった
  • Spring SessionでJDBCストアを使用する場合、関連スキーマが自動生成されるようになった
  • Artemis/HornetQに対してパスワード認証付きの接続が出来るようになった

テスト関連

  • spring-boot-test、spring-boot-test-autoconfigureが分離された
    • spring-boot-starter-test starterを利用しているのであれば、そのままでよい
    • 上記starterはAssertJ, JSONassert, JsonPath の依存関係も含んでいる
  • org.springframework.boot.testパッケージがspring-boot-testに移動された
  • Test configurationの自動検出(詳細
  • MockBeanアノテーションやSpyBeanアノテーションを付与する事で、Mockitoによるモッキングが可能になった
  • JsonTestアノテーション、WebMvcTestアノテーション、RestClientTestアノテーション、DataJpaTestアノテーションの追加
  • JacksonTester、GsonTester、BasicJsonTesterにより、AssertJベースのテストが可能になった
  • AutoConfigureRestDocsアノテーションによるSpring REST Docsの出力
  • spring-boot-starter-testがAssertJ assertions libraryを使用するようになった

その他

  • server.jetty.acceptors と server.jetty.selectors の追加
  • server.max-http-header-size と server.max-http-post-size の追加
  • server.tomcat.min-spare-threads の追加
  • application.ymlのspring.profilesで、「!」による否定構文がサポートされるようになった
  • actuatorにheapdumpエンドポイントが追加された
  • Spring Mobileが全てのテンプレートエンジンで自動設定されるようになった
  • Spring Boot maven pluginにincludeSystemScope属性が追加された
  • HandlerExceptionResolverによる例外をロギングするためのspring.mvc.log-resolved-exceptionプロパティが追加された
  • spring.data.cassandra.schema-actionプロパティが追加された
  • Spring Bootのfat jarフォーマットの消費メモリが削減された
  • ロケールからキャラクタセットへのマッピングがspring.http.encoding.mapping.<locale>=<charset>で可能になった
  • spring-data-releasetrain.version=Ingalls-M1とSpring milestone repositoryを設定することで、Spring Data "Ingalls"リリースを試すことができる

Spring Boot 1.4.0 で非推奨となった機能

  • Velocity が非推奨となった(SPR-13235Issue5276による)
  • UndertowEmbeddedServletContainer のいくつかのコンストラクタが非推奨となった
  • ConfigurationPropertiesアノテーションのlocations/merge属性が非推奨となった
  • SpringApplication.printBannerが使用されなくなった
  • InfoEndpoint.getAdditionalInfoが非推奨となった
  • org.springframework.boot.autoconfigure.test.ImportAutoConfigurationがorg.springframework.boot.autoconfigureに移動された
  • PropertiesConfigurationFactory.setProperties(Properties)が非推奨となり、PropertySourcesを使用するようになった
  • org.springframework.boot.context.embedded パッケージのいくつかのクラスが org.springframework.boot.web.servlet に移動された
  • org.springframework.boot.context.web パッケージのクラスが全て移動された
  • management.security.roleが非推奨となり、management.security.rolesを使用するようになった
  • TomcatEmbeddedServletContainerFactory.getValves()が非推奨となり、getContextValves()を使用するようになった
  • org.springframework.boot.actuate.system.EmbeddedServerPortFileWriterが非推奨となり、org.springframework.boot.system.EmbeddedServerPortFileWriterを使用するようになった
  • org.springframework.boot.actuate.system.ApplicationPidFileWriterが非推奨となり、org.springframework.boot.system.ApplicationPidFileWriterを使用するようになった

プロパティ名変更

  • spring.jackson.serialization-inclusion → spring.jackson.default-property-inclusion
  • spring.activemq.pooled → spring.activemq.pool.enabled
  • spring.jpa.hibernate.naming-strategy → spring.jpa.hibernate.naming.strategy
  • server.tomcat.max-http-header-size → server.max-http-header-size

所感

バージョンアップ体験記はこちらです。結構影響を受けました。

設定プロパティ名の変更は結構な影響がありそうです。JDBC POOL設定とか、サーブレットコンテナ設定とか。starter名称も含め、まだ落ち着きそうにありませんね。

Velocityはずっと開発が止まっていたので、非推奨になったのも納得。ちなみに2000年に始まっていて、最後のリリースは2010年です。ちなみにFreeMarkerは2002年から始まっていて、今もメンテナンスが続いています。

変更履歴

  • 2016/06/06 初版
  • 2015/07/11 RC1のリリースノートを追加
  • 2016/07/24 Wiki更新を反映
  • 2016/07/28 Wiki更新を反映
  • 2016/07/31 Wiki更新を反映
Spring Boot Java 2016/07/24 23:45
comments (0)

blog-java2 engine (build:2017-08-10 17:37 JST)