オフィス狛 技術部のJoeです。
SpringBoot 1系が2019/8/1にEOLになり、担当しているプロジェクトもバージョンアップ要件(1.5 → 2.1)がありました。
バージョンアップで対応した内容の一部をご紹介します。
① application.ymlファイルのエラー
非推奨となったプロパティが大量に出てきました。こちらは全てメッセージに従いキー名を変更することで解決しました。【参考)メッセージ】
Property 'spring.thymeleaf.content-type' is Deprecated: Use 'spring.thymeleaf.servlet.content-type' instead. Property 'server.session.timeout' is Deprecated: Use 'server.servlet.session.timeout' instead. Property 'spring.messages.cache-seconds' is Deprecated: Use 'spring.messages.cache-duration' instead. Property 'spring.http.multipart.max-file-size' is Deprecated: Use 'spring.servlet.multipart.max-file-size' instead. Property 'spring.http.multipart.max-request-size' is Deprecated: Use 'spring.servlet.multipart.max-request-size' instead. Property 'spring.datasource.initialize' is Deprecated: Use 'spring.datasource.initialization-mode' instead.
② Beanオーバーライドが無効
次に下記エラーが発生しました。The bean 'XXX', defined in class path resource [XXX.class], could not be registered. A bean with that name has already been defined in class path resource [XXX.class] and overriding is disabled.
SpringBoot 2系では、Beanオーバーライドがデフォルトで無効になったようです。
メッセージのActionに従い、application.ymlファイルに下記を追記しました。
spring.main.allow-bean-definition-overriding: true
③ 非推奨、廃止、構成変更のパッケージ
非推奨、廃止、構成変更になったパッケージがいくつかありましたので、下記のように修正しました。■非推奨
【変更前】
import org.hibernate.validator.constraints.NotBlank; import org.hibernate.validator.constraints.NotEmpty;【変更後】
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotEmpty;
■廃止
【変更前】
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
public class MessageConfig extends WebMvcConfigurerAdapter { ・・・
【変更後】
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
public class MessageConfig implements WebMvcConfigurer { ・・・
■構成変更
【変更前】
import org.springframework.boot.web.support.SpringBootServletInitializer;【変更後】
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
④ application.ymlファイルから@ConfigurationPropertiesで値が設定されない
こちらは動作確認をして気が付いたのですが、@ConfigurationPropertiesアノテーションを付けたクラスでsetterメソッドがstaticだと、application.ymlファイルから値を設定できなくなってしまいました。下記のように非staticなメソッドに変更することで無事設定されました。
@Component
@ConfigurationProperties(prefix = "outerconf")
public class OuterConf {
private static String rootdir;
public static String getRootdir() {
return rootdir;
}
// 非staticに変更
public void setRootdir(String rootdir) {
OuterConf.rootdir = rootdir;
}
}
SpringBootのバージョンアップはたくさんの方が記事にされていますが、環境によって対応が異なるとは思いますので、何かお役に立てれば幸いです。
Java , Spring Boot
0 件のコメント:
コメントを投稿