Spring Boot 2系にあげたときにやったことをまとめようと思います。(関連記事) 今回は、Spring Webの話です。Spring Boot 2.0.9.RELEASEに上げた話になります。2.2対応はまたいつか書きます。
依存しているライブラリのバージョン
Spring Bootのバージョンを1.5.22から2.0.9に上げると依存しているライブラリのバージョンが次のようになります。
Spring Boot 1.5.22.RELEASE → Spring Boot 2.0.9.RELEASE
Hibernate Validator
@NotBlank, @NotEmpty, @Emailが非推奨になった
Hibernate Validator 6.0.0.Finalからorg.hibernate.validator.constraints.NotBlank, org.hibernate.validator.constraints.NotEmpty, org.hibernate.validator.constraints.Emailが非推奨になりました。参考
Spring Boot 2系からはjavax-validationが提供するアノテーションを利用します。
- org.hibernate.validator.constraints.NotBlank + javax.validation.constraints.NotBlank
Jackson /JSON Support
Spring Boot 2からspring-boot-starter-jsonが作られました。jackson-databind, jackson-datatype-jdk8, jackson-datatype-jsr310, jackson-module-parameter-namesが含まれていますので、これらをspring-boot-starter-jsonに置き換えることができます。参考
Spring Web
WebMvcConfigurerAdapter.classが非推奨
Spring Boot 2(Spring 5)からWebMvcConfigurerAdapter.classが非推奨となり、先のクラスを拡張するのではなく、WebMvcConfigurer.classを実装するようになりました。 Spring 5からJava8+になってdefaultメソッドが使えるようになり、WebMvcConfigurerAdapter.classを使わずともインターフェースに実装できるようになったからです。Javadoc
パッケージ変更
Spring Boot 2(Spring 5)からWebと言ってもServletとReactiveに分かれたためです。
- org.springframework.boot.autoconfigure.web.ErrorAttributes + org.springframework.boot.web.servlet.error.ErrorAttributes
- org.springframework.boot.autoconfigure.web.ErrorController + org.springframework.boot.web.servlet.error.ErrorController
プロパティ変更
Boot 2.0.9.RELEASEの設定値一覧を見れば書いてあります。
- server.context-path + server.servlet.context-path
おまけ
org.springframework.web.util.HtmlUtils.htmlEscape(String input, String encoding)の実装が変わった
見出しの通りです。4.3.x.RELEASEから5.0.x.RELEASEに変わりました。4.3.xでは、input == nullのときnullが返ってきていましたが、5.0.xからはExceptionを投げるようになりました。
このように書いていたので本番で障害が起きてしまいました...みなさんお気をつけて
// inputはnullのとき String result = HtmlUtils.htmlEscape(input, encoding); if (result == null) { 何か処理 }