Spring Boot 1.5.xから2.0.xに上げた Spring Web編

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.RELEASESpring 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) {
  何か処理
}