Spring Boot2.3.1とJava11へバージョンアップ

Dev/Java/Spring Boot
Java
Spring Boot

更新日時 : 2020/07/14 11:28
投稿日時 : 2020/07/12 15:17

ブログAPIのJavaのバージョンを8から11に、Spring Bootのバージョンを2.2.5から2.3.1にアップデートした。

https://github.com/vagivagi/blog-api

Java11へのバージョンアップ

変更点はpom.xmlmanifest.yml、CIの設定。

pom.xml

- <java.version>1.8</java.version>
+ <java.version>11</java.version>

manifest.yml

JBP_CONFIG_OPEN_JDK_JRE: '[jre: { version: 11.+}]'

pullrequest-test.yml

 with:
-  java-version: 1.8
+  java-version: 11

## Spring Bootのバージョンアップ

2.3へバージョンアップにするにあたって、引っかかるところは2つあった。

  1. spring-boot-starter-webからバリデーションに関するクラスがなくなっている
  2. テストクラスでエラーレスポンスのassertが失敗する

解決策

結論:公式ドキュメント(リリースノート)を読めばOK https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.3-Release-Notes

1. spring-boot-starter-webからバリデーションに関するクラスがなくなっている

2.3からwebとwebfluxのスターターライブラリからvalidationを切り離したとのことなので、pom.xmlで下記のライブラリを明示的に宣言する。

pom.xml

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

テストクラスでエラーレスポンスのassertが失敗する

ライブラリに含まれる、エラーページやメッセージに関する処理に変更があった。デフォルトではエラーメッセージは非表示設定になったとのこと。デフォルトで表示していたところ、表示したくないメッセージを表示していた事例があって変更されたと、以前参加した勉強会で聞いた。
下記のプロパティでalways, on-param, neverの3種類が設定可能。

server.error.include-message=always