コース一覧
Spring Boot入門
Spring Bootで何が作れるのか

Spring Boot入門

Java で Web API サーバーを作るための Spring Boot の入門コースです。DI コンテナ、REST コントローラ、リクエスト検証、レイヤ分割、Spring Data JPA、例外ハンドリング、テストまでを扱います。毎レッスン、Spring が裏側でやっている判断そのものを pure Java の関数として自分で書き、フレームワークが何を肩代わりしてくれているのかを手触りで理解できる構成にしました。約 12 時間 (1 日 30 分 × 24 日) で 48 レッスンを修了できます。

1
Spring Bootとは何か
0. Spring Bootで何が作れるのか10分
1. サーブレットからフレームワークへ15分
2. ルーティング表という発想15分
3. プロジェクトの構成10分
4. 起動のしくみと自動設定15分
5. パスのマッチング15分
2
DIコンテナ
0. newで書くと何が困るのか15分
1. コンストラクタインジェクション15分
2. インターフェースへの依存15分
3. @Componentと@Bean15分
4. 自作のDIコンテナ20分
5. Beanのスコープとライフサイクル15分
3
RESTコントローラ
0. RESTという設計方針15分
1. @RestControllerの役割15分
2. @GetMappingとパス変数15分
3. クエリパラメータの受け取り15分
4. @PostMappingとリクエストボディ15分
5. ステータスコードの選び方15分
6. ResponseEntityで組み立てる15分
4
リクエストとレスポンスの変換
0. JSONとオブジェクトの往復15分
1. DTOとエンティティを分ける15分
2. recordでDTOを書く15分
3. 入力検証の基本15分
4. 検証エラーをまとめて返す15分
5. アノテーションによる検証15分
5
レイヤ構成とビジネスロジック
0. 3層アーキテクチャ10分
1. @Serviceに置くもの15分
2. 状態遷移をルールにする15分
3. 料金計算のような業務ロジック15分
4. @Transactionalとは何か15分
5. トランザクションの巻き戻し15分
6
データアクセス
0. @Entityとテーブルの対応15分
1. リポジトリという抽象15分
2. メソッド名からクエリを作る20分
3. 検索条件の組み立て15分
4. ページングと並び替え15分
5. N+1問題15分
7
例外処理と横断的関心事
0. 例外をHTTPに変換する15分
1. @ExceptionHandlerと@ControllerAdvice15分
2. エラーレスポンスの形を決める15分
3. フィルタとインターセプタ15分
4. ログとリクエストの追跡15分
5. 設定値の外部化15分
8
テストと仕上げ
0. テストの種類と使い分け15分
1. Serviceの単体テスト15分
2. モックで依存を差し替える15分
3. MockMvcでエンドポイントを試す15分
4. 本番へ出すための次の一歩10分

Spring Boot入門

01Spring Bootで何が作れるのか
02サーブレットからフレームワークへ
03ルーティング表という発想
04プロジェクトの構成
05起動のしくみと自動設定
06パスのマッチング
07newで書くと何が困るのか
08コンストラクタインジェクション
09インターフェースへの依存
10@Componentと@Bean
11自作のDIコンテナ
12Beanのスコープとライフサイクル
13RESTという設計方針
14@RestControllerの役割
15@GetMappingとパス変数
16クエリパラメータの受け取り
17@PostMappingとリクエストボディ
18ステータスコードの選び方
19ResponseEntityで組み立てる
20JSONとオブジェクトの往復
21DTOとエンティティを分ける
22recordでDTOを書く
23入力検証の基本
24検証エラーをまとめて返す
25アノテーションによる検証
263層アーキテクチャ
27@Serviceに置くもの
28状態遷移をルールにする
29料金計算のような業務ロジック
30@Transactionalとは何か
31トランザクションの巻き戻し
32@Entityとテーブルの対応
33リポジトリという抽象
34メソッド名からクエリを作る
35検索条件の組み立て
36ページングと並び替え
37N+1問題
38例外をHTTPに変換する
39@ExceptionHandlerと@ControllerAdvice
40エラーレスポンスの形を決める
41フィルタとインターセプタ
42ログとリクエストの追跡
43設定値の外部化
44テストの種類と使い分け
45Serviceの単体テスト
46モックで依存を差し替える
47MockMvcでエンドポイントを試す
48本番へ出すための次の一歩

Spring Boot入門

Spring Bootで何が作れるのか

このレッスンでは、Spring Boot がどんな道具なのか、Spring Framework とどういう関係にあるのか、そしてこのコースをどう進めていくのかを掴みます。

Spring Boot は「Java で Web サーバーを作るための土台」です

Java でユーザー登録の API を作る場面を思い浮かべてください。ブラウザやスマートフォンのアプリから POST /users というリクエストが飛んできて、送られてきた JSON を読み、名前が空でないかを確かめ、データベースに保存し、201 Created と保存結果の JSON を返す。やることはこれだけです。

ところが、これを何の道具もなしに書こうとすると、本題に入る前にやることが山ほど出てきます。TCP のポートを開いて接続を待ち受け、届いたバイト列を HTTP のリクエストとして解釈し、リクエストラインからメソッドとパスを取り出し、ヘッダを読み、ボディの JSON を Java のオブジェクトに変換し、URL に応じてどのコードを呼ぶか判断し、返す側でも JSON に直してヘッダを組み立てて書き戻す。しかも同時に何百人がアクセスしてもさばけるようにスレッドを管理する。

Spring Boot はこの「本題ではない部分」をまるごと肩代わりしてくれる土台です。開発者が書くのは、次のような数行だけになります。

Java

@RestController public class UserController { @PostMapping("/users") public User create(@RequestBody @Valid UserRequest request) { return userService.register(request.name(), request.email()); } }

ポートを開く処理も、HTTP を解析する処理も、JSON と Java オブジェクトを行き来させる処理も、この中には一切書かれていません。それでもこのコードは動きます。書かれていない部分を全部やってくれるのがフレームワークだからです。

Spring Framework と Spring Boot の関係

名前が似ているので混同されがちですが、この 2 つは別物で、しかも重なっています。関係は次の通りです。

名前何か
Spring FrameworkDI コンテナ、Web MVC、トランザクション管理などの本体。2003 年から続く土台
Spring BootSpring Framework を「設定なしですぐ動く」状態に整えて配る仕組み

Spring Framework は非常に強力ですが、その分だけ設定項目が多く、かつては動かすまでに XML の設定ファイルを何百行も書く必要がありました。どのライブラリのどのバージョンを組み合わせるかも自分で決める必要があり、組み合わせを間違えると起動すらしませんでした。

Spring Boot はここに 3 つの答えを持ち込みました。1 つめが スターター依存 です。spring-boot-starter-web を 1 行書けば、Web アプリに必要なライブラリ一式が、互いに噛み合うバージョンでまとめて入ります。2 つめが 自動設定 です。クラスパスに何が置かれているかを見て、Spring Boot が「Web ライブラリがあるなら Web サーバーを起動する設定をしておこう」と自分で判断します。3 つめが 組み込みサーバー です。かつては Tomcat という Web サーバーを別途インストールして、そこにアプリを配置していましたが、Spring Boot ではアプリ自身が Tomcat を内蔵しているので、ただの Java プログラムとして java -jar で起動します。

つまり Spring Boot は Spring Framework の置き換えではありません。Spring Framework を使いやすく包んだものです。このコースで学ぶ @Autowired や @Transactional は Spring Framework 由来の機能で、@SpringBootApplication や自動設定が Spring Boot の担当です。

Spring Boot で何が作れるのか

実務で最も多いのは、スマートフォンアプリやフロントエンドから呼ばれる REST API サーバー です。JSON を受け取り、データベースを読み書きし、JSON を返すという形で、このコースが主に扱うのもこれです。

それ以外にも、サーバー側で HTML を組み立てて返す従来型の Web アプリケーション、定期実行のバッチ処理、メッセージキューを読み続ける常駐プログラム、複数のサービスに分割したマイクロサービスの各サービスなど、幅広く使われます。日本の業務システム開発では Java と Spring Boot の組み合わせが定番になっており、求人でも最もよく見かける技術の 1 つです。

このコースの進め方について、正直にお伝えします

このコースには、はっきりさせておきたい制約があります。この学習環境では、Spring Boot のアプリケーションそのものを起動して実行することはできません。

理由は環境の作りにあります。ブラウザ上の演習は、Main クラスの static メソッドを 1 つ呼び出して、その 戻り値 を期待値と比べる、という単純な仕組みで採点しています。ここには Web サーバーもデータベースも、Spring の DI コンテナも存在しません。@RestController を書いても、それを読み取って動かしてくれる人がいないので、ただのコメントのような飾りになってしまいます。

そこでこのコースは、次の方針を取ります。

  1. Spring の書き方そのもの は、本文のコード例と選択式クイズで身につけます。アノテーションの意味、どこに何を書くか、Spring が何を判断しているかは、読んで確認します
  2. 演習では、Spring が裏側でやっている判断そのものを pure Java で書きます。たとえば「URL からどのメソッドを呼ぶか決める」「送られてきた値が正しいか検証する」「Java オブジェクトを JSON 相当の文字列に組み立てる」といった処理です

これは苦し紛れの代替ではなく、むしろ狙いのある構成です。フレームワークは便利ですが、便利すぎて「何が起きているのか分からないまま動いてしまう」という副作用があります。@GetMapping("/users/{id}") と書いたら URL が繋がる、それはなぜかと聞かれると答えられない。この状態はエラーが出た瞬間に手が止まります。

たとえば次のレッスンでは、"GET /users/12 HTTP/1.1" という文字列からメソッドとパスを取り出す関数を自分で書きます。これは Spring Boot が内蔵する Tomcat が毎リクエスト実際にやっている処理と同じことです。一度自分で書いておくと、@GetMapping という 1 行が「ルーティング表への登録」であることが実感として分かります。同じように、DI コンテナも自分で小さいものを作り、リクエスト検証も自分で書きます。

前提知識と、手元の環境について

Java の基本文法、つまり変数、if と for、メソッド、クラスとインターフェースが読み書きできることを前提にします。HTTP のメソッドとステータスコードの意味、SQL の単純な SELECT が読めることも想定しています。

ブラウザ上の演習だけでコースは完走できますが、余裕があれば手元に JDK 17 以上と IntelliJ IDEA などのエディタを用意し、本文で紹介する Spring Boot のコードを実際に動かしてみることを強くおすすめします。本文のコードは、コピーして動く形で書いていきます。

次のレッスンから、まずは「フレームワークが無かったらどれだけ大変なのか」を実際に手を動かして確かめていきます。

このレッスンに出てくる用語

意味があいまいなまま進んだ語は、ここから読み直せます。

  • サーバークライアント(ブラウザなど)がリクエストを送り、サーバーがレスポンスを返す。
  • エンドポイント「この URL を叩くとこの機能が動く」入口の住所
  • APIアプリ間でデータをやり取りする窓口
  • ブラウザユーザーから見たWebのクライアント
  • リクエストWeb 通信の基本単位、ブラウザの問い合わせとサーバーの返答
  • applicationJSON 本文を送るときの Content-Type
  • データベースデータを構造化して保存する仕組み
  • HTTPWeb の通信プロトコル、HTTPS は TLS で暗号化したもの
生田 陸人
監修生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
編集 ゆめさく編集部·公開 2026/08/09

関連レッスン

  • サーブレットからフレームワークへ

    生の HTTP 文字列を解析する処理を書き、フレームワークの価値を実感します。

  • ルーティング表という発想

    メソッドとパスからハンドラを引く表を自分で実装します。

  • プロジェクトの構成

    Spring Initializr が作るディレクトリと build ファイルを読めるようになります。

  • 起動のしくみと自動設定

    @SpringBootApplication が何を束ねているのかを確認します。

分からないところは Tap (AI先生) に質問できます

24 時間いつでも、あなたのレベルに合わせて日本語で答えます。