Spring Boot2.3.1とJava11へバージョンアップ
layers Dev/Java/Spring Boot
label
Java
label
Spring Boot
date_range
更新日時 : 2020/07/14 11:28 date_range
投稿日時 : 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.xml
とmanifest.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つあった。
spring-boot-starter-web
からバリデーションに関するクラスがなくなっている- テストクラスでエラーレスポンスの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