JAVA

Spring Boot 2→3 移行ガイド:段階的アップデートと Jakarta EE 対応

ⓘ本ページはプロモーションが含まれています

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

全体像と移行戦略

Spring Boot 2 系から 3 系へのアップグレードは、単なるバージョン上げではなく Java 17 以上Jakarta EE 9+ への全面的な置換が必須になる大規模なブレークチェンジです。本セクションでは、全体像と推奨する段階的移行ステップを概観します。

  • 結論:まずプロジェクト全体で Java 17(もしくは LTS の Java 21) を統一し、
    2.5 → 2.7 → 3.x の三段階でバージョンアップするのが最も安全です。
  • 背景:マイナーバージョンごとの変更点は互換性が高く、障害切り分けやロールバックが容易になるためです。
  • 期待効果:段階的に実施すれば、依存ライブラリの非推奨警告削減・Jakarta 変換作業の抜け漏れ防止が実証されています[³]。

前提条件と環境統一

この章では Java のバージョン選定ビルドツール別設定 を中心に、開発環境・CI 環境をいかに統一するかを解説します。環境がばらついていると Jakarta パッケージ置換時に大量のコンパイルエラーが発生しやすく、移行作業全体のコストが急増します。

Java バージョンの選定と設定

Spring Boot 3 系は 最低 Java 17、推奨は Java 21(LTS) です。以下に JDK の取得から IDE 設定までの標準手順を示します。

  1. JDK の入手
  2. AdoptOpenJDK / Eclipse Temurin / Azul Zulu 等、LTS 版を公式サイトからダウンロード。
  3. JAVA_HOME を JDK ディレクトリに設定し、PATH$JAVA_HOME/bin を追加。

  4. IDE の統一(IntelliJ IDEA と Eclipse の例)

  5. IntelliJFile → Project Structure → Project SDK17 または 21 を選択。

  6. EclipsePreferences > Java > Installed JREs に同様の JDK を登録し、プロジェクトの Execution environmentJavaSE-17(または JavaSE-21)に合わせる。

確認ポイント:ターミナルで java -versionopenjdk 17.x 以上であることを必ずチェックしてください。

ビルドツール別設定例

Maven 用共通プロパティ(pom.xml

Gradle (Kotlin DSL) 用設定例

要点java.version(Maven)または toolchain.languageVersion(Gradle)を プロジェクト全体で統一 することで、後続の Jakarta 移行作業が確実に適用されます。


段階的アップグレード手順

マイナーバージョンごとに段階的に上げることで、リスクを分散しつつ 問題点の早期発見 が可能です。ここでは各フェーズのチェックポイントと推奨作業を示します。

2.5 → 2.7:マイナーバージョンで安全に移行

この段階はコード変更がほぼ不要な「バージョンだけ上げる」ステップです。主な利点は 開発ツールの改善依存ライブラリの非推奨警告削減 です。

作業項目 内容
バージョン変更 pom.xml または build.gradle.kts の Spring Boot バージョンを 2.7.x に更新
ビルド・テスト実行 ./mvnw clean verify(Maven)/./gradlew clean test(Gradle)でエラーが無いことを確認
依存ライブラリのアップデート Spring Cloud 2023.0.x、Spring Data JPA 2.7.x 等、同時に LTS バージョンへ合わせる

ポイント:このフェーズで問題がなければ、次段階の大規模変換に進む準備が整ったと判断できます。

2.7 → 3.x:本格的ブレークチェンジ

Spring Boot 3 系では Jakarta EE パッケージ置換新しい API(SecurityFilterChain 等) が導入されます。以下の表に主要な変更点をまとめました。

項目 2.7 系 (javax) 3.x 系 (jakarta)
Java バージョン 任意(11〜17) 最低 17、推奨 21
パッケージ javax.* jakarta.*
Spring Security WebSecurityConfigurerAdapter SecurityFilterChain
Auto‑configuration 登録 spring.factories AutoConfiguration.imports

依存ライブラリ更新チェックリスト(抜粋)

  • Spring Cloud2023.0.x 以上
  • Hibernate ORM6.4.x(Jakarta Persistence 対応)
  • Tomcat10.1.x(Servlet API が jakarta.servlet に置換)

参考:公式 Migration Guide の「依存バージョン対応表」[^4] を必ず参照し、プロジェクト固有のライブラリも同様に確認してください。


主要なコード・設定変更ポイント

Spring Boot 3 系への移行で最も頻出する変更は Jakarta パッケージ置換Security のリファクタリング、そして AutoConfiguration 登録方式の変更 です。以下に具体的な実装例と自動化ツールを紹介します。

Jakarta EE パッケージ置換と自動化ツール

手作業で javax.*jakarta.* を書き換えると抜け漏れが発生しやすいため、OpenRewrite のレシピ JavaxToJakarta を利用します。

プラグインは変換レポートを出力し、未変換箇所が残っている場合は CI で失敗させる 設定も可能です。

Spring Security の新構成:SecurityFilterChain への移行

WebSecurityConfigurerAdapter が削除されたため、関数型 DSL に置き換えます。以下は典型的な設定例です。

重要ポイント
- @Configuration(proxyBeanMethods = false) により起動時のコンテキスト生成が高速化。
- DSL が直接 HttpSecurity を返すため、従来の configure() メソッドは不要。

spring.factories の廃止と代替設定

Spring Boot 3 系では自動構成クラスを列挙するファイルが AutoConfiguration.imports に変更されました。既存プロジェクトでの移行手順は次の通りです。

  1. src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports を作成
  2. spring.factories に記載していたクラスを同ファイルに列挙

個別にインポートしたい場合は @ImportAutoConfiguration アノテーションで明示的に指定できます。

要点spring.factories が読み込まれなくなるため、必ず新形式へ置き換えてください。


テスト・CI パイプラインでの検証フロー

移行後は ビルド・テスト・デプロイ を自動化し、旧環境と新環境の差分を継続的に比較します。以下は GitHub Actions を用いた典型的なワークフローです。

CI 設計例(GitHub Actions)

典型的なエラーパターンと対処法

エラー例 原因 推奨対策
ClassNotFoundException: jakarta.servlet.Filter javax.servlet.* が残存 OpenRewrite のレポートで未変換クラスを抽出し、手動修正
NoSuchBeanDefinitionException: SecurityFilterChain WebSecurityConfigurerAdapter が残っている 新しい SecurityConfig クラスに置き換え、@EnableWebSecurity を削除
Failed to load ApplicationContext(自動構成が無効) spring.factories が読み込まれない AutoConfiguration.imports に対象クラスを列挙、または @ImportAutoConfiguration を使用

ベストプラクティス:CI で Java バージョンごとのマトリックスビルドOpenRewrite の自動チェック を組み合わせると、移行漏れや互換性問題を早期に検出できます。


実務ベストプラクティスまとめ

以下は公式ガイドと実務事例から抽出した、Spring Boot 2 → 3 移行で最も効果的な手順です。

  1. 環境統一
  2. JAVA_HOME と IDE の JDK を Java 17/21 に固定。ビルドツールのプロパティでも同様に設定することで、全開発者・CI が同一バージョンを使用します。

  3. 段階的アップデート

  4. 2.5 → 2.7(安全マイナーバージョン)→ 3.x(ブレークチェンジ)の順に実施。各フェーズでビルド・テストを必ず走らせ、問題が無いことを確認してから次へ進む。

  5. 自動変換ツール活用

  6. OpenRewrite の JavaxToJakarta レシピでパッケージ置換を一括実行。CI でレポートの有無をチェックし、手作業の抜け漏れを防止。

  7. 新 API へのリファクタリング

  8. SecurityFilterChainAutoConfiguration.imports に置き換えるだけで、非推奨警告がほぼゼロになることが実証されています[^5]。

  9. CI での検証自動化

  10. Java バージョンマトリックス + OpenRewrite のチェックを標準パイプラインに組み込み、ビルド失敗時は即座に PR をブロック。

以上の手順とチェックポイントを守れば、安全かつ確実に Spring Boot 3 系へ移行でき、最新エコシステムの恩恵(パフォーマンス向上・長期サポート)をすぐに享受できます。


参考文献

[^1]: Spring Official Migration Guide, Spring.io, 2024‑10. https://spring.io/
[^2]: 「Spring Boot 2→3 移行実務レポート」, MizuCoffee Blog, 2025‑04‑24. https://springboot-123.mizucoffee.com/ja/blog/spring-boot-2-to-3-migration-guide/
[^3]: 株式会社TechBridge 社内事例(2025 年度)―「Spring Boot 2.7 にアップデートした結果、非推奨警告が 80% 削減」※社外公開情報に基づく。
[^4]: Spring Official Dependency Compatibility Matrix, Spring.io, 2024‑10. https://spring.io/
[^5]: 「Spring Boot 3 移行ベストプラクティス」, Tatsujin Tech Blog, 2023‑12‑09. https://app-tatsujin.com/spring-boot-migration-2-to-3/

スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-JAVA