Dev Study
← 解説「Spring Boot の登場」に戻る

サンプルコードで身につける: Spring Boot の登場

解説で学んだ概念を、5つの具体例で確認します。素朴な例から実務寄りの例へと進みます。

1issue が挙げた「学習の坂」と Servlet の回の実験

発端の issue(当時の Jira では SPR-9888、2012年10月17日)が、を使うために学ばなければならないものとして挙げた項目です。右側は、 の回の実験でそれに当たったものです。小さな Servlet を1つ動かすだけで、挙げられた項目の多くに触れていたことが分かります。

spring-framework #14521 の本文の箇条書き → Servlet の回の実験で当たるもの表
web.xml and other Servlet oriented configuration concepts
→ URL とクラスの対応を web.xml に書いた
.war directory structure
→ WEB-INF/classes と WEB-INF/web.xml の配置を守った
Container implementation specific items (e.g. ports, thread pools, etc.)
→ ポートもスレッド(http-nio-8080-exec-N)も Tomcat のもの
Complex Classloading hierarchies
→ クラスを読み込んだのは Tomcat のアプリ別クラスローダ
Monitoring and management facilities configured outside of the application
Logging facilities
Configuration of application context roots
→ URL の /demo は WAR のファイル名から決まった

2対比: WAR・Spring Boot・Node

誰が を持ち、誰がポートを開くかを並べました( の列は公式チュートリアルの記述によるもので、この回では起動していません)。Spring Boot は main の持ち主を Node と同じ側に寄せましたが、 で Web アプリを作る場合、中で動くのは Servlet の仕様に沿ったのままです。入れ替わったのは入れ物と中身で、Servlet が無くなったわけではありません。

main とポートの持ち主表
| WAR を Tomcat に置く | Spring Boot | Node
-------------------+-------------------------+-----------------------------+----------------------
main を持つのは | Tomcat | アプリ | アプリ
ポートを開くのは | Tomcat | アプリに組み込まれた Tomcat | アプリ自身のコード
動かし方 | webapps に WAR を置く | java -jar | node server.js
Servlet の仕様 | 6.1(Tomcat 11.0.26) | 6.1(Boot 4.1.1 の要件) | 関係しない

3年表: Spring Boot の主な版

主な版の公開日と、土台にしている 、Java の最低要件、EE の世代を並べました。1.0 の行の空欄は、このコースでは一次ソースで確かめていないものです。3.0 の行で Java の最低要件と名前空間が同時に変わっています。

Spring Boot の版(告知ブログと GitHub のリリース日による)表
Boot | 公開日 | Spring Framework | Java の最低 | EE の世代
------+-------------+------------------+-------------+------------------------------------
1.0 | 2014-04-01 | (未確認) | (未確認) | javax
2.0 | 2018-03-01 | 5.0 | 8 | javax
3.0 | 2022-11-24 | 6.0 | 17 | Jakarta EE 9 を基準に 10 へ対応
4.0 | 2025-11-20 | 7.0 | 17 | Jakarta EE 11
4.1 | 2026-06-10 | 7.0 | 17 | Jakarta EE 11
4.1.1 | 2026-08-20 | 7.0.9 | 17 | Jakarta EE 11(Servlet 6.1)

4javax から jakarta へ

Servlet の版と の世代、名の対応です。Jakarta EE 9 の仕様は目標を、EE 8 と機能はほぼ同じまま新しい名前空間 で出すことだと書いており、機能を足す版ではなく名前を変える版でした。コードは Servlet の回に 11 で動いた で、 で書いたコードがどう失敗するかはこのコースでは試していません。

Servlet の版と名前空間表
Servlet | Jakarta EE | パッケージ名 | 使っている Spring Boot
--------+-------------------------+--------------+------------------------
4.0 | 8 | javax |
5.0 | 9(2020年) | jakarta |
6.0 | 10 | jakarta | 3.0
6.1 | 11 | jakarta | 4.1.1
// Tomcat 11.0.26(Servlet 6.1)で動いた Servlet の import
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

// Spring Boot 3.0 の移行ガイドは、依存ライブラリの指定も変わると書いている
//   使うもの   : jakarta.servlet:jakarta.servlet-api
//   使わないもの: javax.servlet:javax.servlet-api

5どの版がサポート中かを確かめる

api.spring.io が返す各世代のサポート期限を、2026年10月1日に取得した値です。この日の時点で 3.5 系は無償(OSS)のサポートが終わっています。期限は日付で決まるので、表を覚えるのではなく、使う前に取得し直すものと考えてください。

Spring Boot のサポート期限(api.spring.io、2026-10-01 取得)表
世代 | OSS サポート終了 | 商用サポート終了 | 2026-10-01 時点
------+------------------+------------------+----------------------------
3.5.x | 2026-06-30 | 2032-06-30 | OSS は終了(商用のみ)
4.0.x | 2026-12-31 | 2027-12-31 | OSS サポート中
4.1.x | 2027-07-31 | 2028-07-31 | OSS サポート中(最新は 4.1.1)
4.2.x | 2027-12-31 | 2028-12-31 | 未リリース

図やコードに出てくる用語(タップで説明)