Spring Boot 1.3がリリースされました
Spring Boot 1.3.0 のリリースが遅れてますね。ただissueは残り2件となっていて、今はSpring Framework 4.2.3の正式リリースを待っているようです。ということで、今週中にもリリースされるのではないでしょうか。
2015/11/16追記:正式リリースされたようです。
前回時点からWikiが更新されたので、和訳も更新してみました。
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-1.3-Release-Notes
Spring Boot 1.2 からのアップグレード
- 1.2で非推奨となったクラス・メソッド・プロパティの削除
- JacksonのObjectMapperに関する変更、Jackson2ObjectMapperBuilderの追加
- 二重の初期化を避けるため、ログ設定ファイルに
-spring
サフィックスの付与が推奨されるようになった(例:logback-spring.xml)
- logging.configで設定されたログ設定ファイルが見つからない場合、起動に失敗するようになった
- Logback設定ファイルが誤っている場合、起動に失敗するようになった
spring.hateoas.apply-to-primary-object-mapper
の削除
- Actuatorエンドポイントの
/health
におけるセキュリティー強化
- HTTPレスポンス圧縮用の設定について、server.tomcat.compression.*やspring.http.gzip.*が削除され、代わりにserver.compression.*が追加された
- Tomcatのセッション永続化がデフォルトでOFFになったため、使用したい場合は server.session.persistentをtrueに設定する必要がある
- 保存先はserver.session.store-dirで設定できる
- JettyでJSPを使用する場合、org.eclipse.jetty:jetty-jspを明示的に追加しなければならなくなった
- Spring MVCのエラーレスポンスにスタックトレースが含まれなくなった
- error.include-stacktraceで以前の挙動に戻す事が出来る
- Spring Securityが3.2から4.0にアップグレードされた
- これに伴い、ThymeleafのSpring Securityプラグインもアップグレードされている
/templates
が見つからなくてもエラーにはならなくなった
- Groovyテンプレート設定の変更
- prefix.spring.groovy.template.prefix → prefix.spring.groovy.resource-loader-location
- Gradle pluginのbootRunタスクを使用する場合、src/main/resourcesがクラスパスに追加されなくなった
- addResourcesプロパティで以前の挙動に戻す事が出来る
- Gradle pluginのアップデート(ほとんどのユーザは関係なし)
- Gradle pluginのapplication pluginがデフォルトでは適用されなくなった
- Maven pluginのspring-boot:runで、src/main/resourcesがクラスパスに追加されなくなった
- Devtoolsの利用が推奨される
- addResourcesプロパティで以前の挙動に戻す事も出来る
- spring-boot-starter-parentを使用する場合、maven-resources-pluginsによるフィルタリングトークンが、
${*}
から@
に変更された
- Spring形式のプレースホルダとの衝突を避けるため
- 具体的には、
${project.version}
ではなく@project.version@
を使用する
- CLIアプリの依存解決用に、Maven bom (bill of materials) のサポートが追加された
- 以下のapplication.propertiesキーがリネームされた
- spring.view.* → spring.mvc.view.*
- spring.pidfile → spring.pid.file
- error.path → server.error.path
- server.session-timeout → server.session.timeout
- servet.tomcat.accessLogEnabled → server.tomcat.accesslog.enabled
- servet.tomcat.accessLogPattern → server.tomcat.accesslog.pattern
- servet.undertow.accessLogDir → server.undertow.accesslog.dir
- servet.undertow.accessLogEnabled → server.undertow.accesslog.enabled
- servet.undertow.accessLogPattern → server.undertow.accesslog.pattern
- spring.oauth2.* → security.oauth2.*
- server.tomcat.compression → server.compression.*
- spring.http.gzip → server.compression.*
- prefix.spring.groovy.template.prefix → prefix.spring.groovy.resource-loader-location
- Spring Framework 4.2以上が必須になった
新機能と注目ポイント
- Spring Framework 4.2への移行に伴い、いくつかの3rd Partyライブラリがアップグレードされた
- Developer tools(spring-boot-devtools)の追加
- テンプレートキャッシュ設定などの有効化
- アプリケーションの自動再起動
- LiveReloadのサポート
- リモートアップデート、リモートデバッグのサポート
- 再起動時のHTTP接続永続化
- キャッシュライブラリのAuto-configuration追加、@EnableCachingの追加
init.d
またはsystemd
サービスとしてインストールできる、実行可能JARファイルが生成できるようになった
- Cassandraのサポート
- OAuth2サーバ・クライントのサポート
- Spring SessionとSpring Data Redisが有効な場合、セッションデータがRedisに格納されるようになった
- jOOQのAuto-configurationが追加された
- SendGridメール配信サービスのAuto-configurationを追加
- Apache ActiveMQ ArtemisのAuto-configurationが追加された
- bean validation(JSR 303)をサポートするspring-boot-starter-validation POMの追加
- @WebServlet, @WebFilter, @WebListener のサポート
- プロパティ設定 spring.resources.chain.strategy.content.* と spring.resources.chain.strategy.fixed.* により、Springリソースチェインのcache bustingが有効化できるようになった
- DB2, Firebird, TeradataのJDBC URLの場合、JDBCドライバクラス名が自動的に推定されるようになった
- spring.datasource.typeによってコネクションプール実装を変更できるようになった
- Devtools使用時、Actuatorエンドポイントの
/h2-console
でH2 Web Consoleが使用できるようになった
- Embedded MongoDBのAuto-configurationが追加された
- banner.txtでANSI colorが使用できるようになった
- アクティブなプロファイルが無い場合にapplication-default.propertiesがロードされるようになった
- ApplicationArgumentsの追加により、SpringApplication.afterRefreshの引数String[]は非推奨となった
- ApplicationArgumentsを引数にとるApplicationRunnerが追加された
- logging.pattern.consoleとlogging.pattern.fileの追加
- スタックトレースにJarファイル名が表示されるようになった
- Log4J 2の出力が改善され、Logbackに似た出力内容になった
- Tomcatアクセスログのディレクトリ、prefix/suffixがプロパティで設定できるようになった
- logback-spring.xmlで使用できる、
<springProfile>
などのタグが追加された
- server.session.persistent=trueなどを設定することによって、セッションデータの永続化が可能になった
- server.session.*のプロパティ設定によって、トラッキングモードやクッキーの設定ができるようになった
- server.use-forward-headers=trueのプロパティ設定によって、X-Forwarded-Forヘッダがrequest.getRemoteAddr()で考慮されるようになった
- @ConfigurationPropertiesを使用する場合に、@EnableConfigurationPropertiesが不要になった
- JMSやRabbitのエンドポイントが簡単に無効化できるようになった
- spring.messages.fallback-to-system-localeプロパティの追加
- Auto-configurationレポートにおいて、@SpringBootApplication(exclude=...) などにより除外された設定が明示的にリスティングされるようになった
- Actuatorメトリクスの追加、Java8対応
- HealthIndicatorsの追加(Elasticsearch, Email, JMS)
- Actuatorエンドポイント
/logfile
, /flyway
, /liquibase
の追加
- ActuatorエンドポイントがCORS(Cross-Origin Resource Sharing)に対応した
- Actuatorエンドポイントの
/env
と/metrics
において、正規表現によるフィルタリングが可能になった(例:http://localhost:8080/metrics/.*root.*)
- spring-boot-starter-hateoas(Spring HATEOAS)が有効な場合、Actuatorエンドポイント
/actuator
でリンク一覧が生成されるようになった
- spring-boot-actuator-docsが追加され、
/docs
でActuatorエンドポイントのドキュメントが参照できるようになった
- Health indicatorsが簡単に無効化出来るようになった
- プロパティ設定management.trace.includeによって、詳細ログ出力のためのactuator
TraceWebFilter
が有効化できるようになった
- Maven pluginに、総合テストで便利なstart/stop goalが追加された
- Maven pluginのspring-boot:runで、-Drun.profilesなどによってプロファイルが設定できるようになった
- 実行可能JARファイルを作成するためのAntLibモジュールが追加された
- meta-dataを読むためのspring-boot-configuration-metadataが追加された
- spring-configuration-metadata.jsonへdeprecation属性が追加された
- spring-configuration-metadata.jsonのデフォルト値設定が改良された
- CLIアプリの依存解決時に、Mavenのsettings.xmlが参照されるようになった
その他
- JacksonのJava8モジュールがデフォルトで登録されるようになった
- TransactionTemplatebeanがTransactionAutoConfigurationの一部として含まれるようになった
- spring.mail.jndi-nameプロパティにより、MailServer beanがJNDIから取得できるようになった
- server.display-nameプロパティにより、サーブレット名が設定できるようになった
- FlywayMigrationStrategy beanにより、Flyway移行ストラテジが設定できるようになった
- SpringBootVersionクラスが追加された
- JUnit実行時の標準出力をキャプチャするためのOutputCapture hamcrest matchersが追加された
- ローカルノードでないElasticsearchを使用するための設定ができるようになった
- spring.pid.fail-on-write-errorプロパティを設定することで、PIDファイル作成失敗時にApplicationPidFileWriterが例外を送出するようになった
- Maven pluginのspring-boot:runの実行時のオプションとして、useTestClasspathが追加された
- DB2とInformixについて、死活監視クエリが追加された
- プロパティバインディングの失敗における例外メッセージが改善された
- @SpringBootApplicationアノテーションに、scanBasePackages, scanBasePackageClasses属性が追加された
- AllNestedConditions, NoneNestedConditionsの追加
- アプリケーション開始時に、アクティブなプロファイルが表示されるようになった
CONSOLE
, LOG
, OFF
が設定できる、spring.main.banner-modeプロパティが追加された
- プロキシサーバの向こう側にあるリモートアプリに対してspring.devtools.remote.proxyプロパティを使用する事で、DevToolsが動作するようになった
- jackson-module-parameter-namesがクラスパスにある場合、Auto-configurationされるようになった
- SpringのWebSocket message convertersがAuto-configurationされるようになった
- サーブレットフィルタがDelegatingFilterProxyを介して登録されるように、DelegatingFilterProxyRegistrationBeanが追加された
Spring Boot 1.3.0 で非推奨となった機能
- Application.showBannerとApplicationBuilder.showBannerが非推奨となり、setBannerModeに置き換えられた
- @ConditionalOnMissingClassの属性がnameからvalueに変更された
- log4j 1.xがEOLとなったため、Log4JLoggingSystemが非推奨となった
- ConfigurableEmbeddedServletContainer, setJspServletClassName, setRegisterJspServletが、setJspServletに置き換えられた
- EndpointMBeanのコンストラクタ引数にObjectMapperに変更された
- DropwizardMetricWriterがDropwizardMetricServiceに置き換えられた
- ApplicationArgumentsの追加により、SpringApplication.afterRefreshの引数String[]は非推奨となった
- VcapEnvironmentPostProcessorが非推奨となり、CloudFoundryVcapEnvironmentPostProcessorに置き換えられた
- LoggingSystem.initializeメソッドがが非推奨となり、LoggingInitializationContextに置き換えられた
- パッケージ移動するため、ServerPortInfoApplicationContextInitializerが非推奨となった
感想
長いっすねw
バージョンアップ体験記はこちら→その1、その2
2015/11/16追記:Typoを指摘したら修正してもらえました。ちょっと貢献♪
変更履歴
- 2015/11/16 初版
- 2015/11/16 正式リリースに伴い追記