Spring Boot 1.5x -> 2.1.xへのマイグレーションで得られた知見

学習目的でちまちま検証してみました。 公式にマイグレーション手順のページはありますが、実際にやってみたところ多少独自の知見が得られたので超簡単ですが共有しておきます。

実際にやってみてハマったところ

JUnit4対応

  • Spring 5からはJUnit5サポートしていますが、素のままではJUnit4に対応していないので追加ライブラリを入れる必要があります。
  • そのライブラリを入れるだけでは動かず、TestConfigurationでDIコンテナに登録しているBeanの名前が衝突してJUnitの起動に失敗しました。
  • TestConfigurationなクラスにComponentScanをつけて欲しいBeanが存在するパッケージを指定して適当にDIへ登録していたのを、適当にScanしていたがゆえにTestConfiguration自身もScan対象になってしまっていたので、DIへ登録したいクラスをピンポイントでImportすることで解決しました。

Spring BootからSPAをホストする関連の設定の見直し

  • Spring Boot 1.5.xと2.1.xではホストする際に必要な設定に微妙な違いがあるのですが、それを失念しておりログイン直後にエラー画面に遷移する謎現象に悩まされました。
  • Qiitaで以前に投稿した自分の記事に助けられました。

Spring Securityのpropertiesが削除されている

  • 以前はproperties経由でSpring Securityのデフォルト設定の一部を変更できたのですが、それができなくなっていました。
  • 自分で設定キーを追加し、自分でその設定を読み出し、JavaConfigurationで設定を変更するといった追加対応が必要でした。

Spring SecurityのWebSecurityConfigurerAdapterがabstractからinterfaceに変更されているのでその対応

まとめ

やってみての感想は、「案外簡単」です。
そのため、アップグレードを検討している案件では事前調査に時間をかけるよりもとりあえず1日か2日程度かけてトライしてみたほうが良さそうだと思いました。
アップグレード後に起動すると親切なことにログにマイグレーションに必要な対応かそのヒントが表示されるので、それに従って設定なりコードなりを変更するだけで対応できそうです。
もちろん、テストはしっかりやる必要はありますが。

以上。