オフィス狛 技術部の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 件のコメント:
コメントを投稿