本文へスキップ
BecomeCoder

Spring / Spring Bootコース · 第6章 実践 ― 実務で通用するSpringアプリへ · レッスン25

Spring のまとめ ― Springアプリの全体像

ローカル実施

導入

第1章の「フレームワークとは何か」から始まり、Bean・DIコンテナ・Spring Boot・Web・データアクセス・実践的な作法までを見てきました。最後に、これらを1枚の絵に重ね合わせて、コース全体の地図を完成させましょう。

説明

このコースで学んだ要素を、実際のリクエストが流れる順に並べ直すと、次のような全体像になります。

graph TD
  subgraph Boot["Spring Boot(第3章)"]
    SBA["@SpringBootApplication<br/>組込みTomcatで起動"]
  end

  subgraph DI["DIコンテナ(第2章)"]
    Ctx["ApplicationContext<br/>@Component/@Bean を組み立てる"]
  end

  subgraph Web["Web層(第4章)"]
    Ctrl["Controller<br/>@RestController / @GetMapping等<br/>DTO・@Valid(第6章)"]
  end

  subgraph Biz["業務層"]
    Svc["Service<br/>@Transactional(第5章)"]
  end

  subgraph Data["データ層(第5章)"]
    Repo["Repository(JpaRepository)"]
    Entity["Entity(@Entity)"]
  end

  Client["クライアント"] -->|HTTPリクエスト| SBA
  SBA --> Ctx
  Ctx -.->|Beanを組み立てて配線| Ctrl
  Ctx -.->|Beanを組み立てて配線| Svc
  Ctx -.->|Beanを組み立てて配線| Repo
  Ctrl --> Svc
  Svc --> Repo
  Repo --> Entity
  Entity --> DB[("データベース")]
  Svc -.->|例外発生時| Advice["@ControllerAdvice<br/>で一元処理"]

コース全体を通しての要点を、あらためて言葉にしておきます。

  1. Springの核心はDIコンテナ。「自分でnewしない、必要なものを宣言する」というコンストラクタインジェクションの発想がすべての土台になっています(第2章)。
  2. Spring Bootは「土台の自動化」。依存関係を足すだけで、賢い初期値によってすぐ動くアプリが作れます(第3章)。
  3. Web層は「HTTPとJavaオブジェクトの変換係」。Controllerがリクエストを受け取り、JSONとDTOを行き来させます(第4章)。
  4. データ層はインターフェース1つでCRUDが手に入るSQLを書かずに、メソッド名やアノテーションで意図を宣言する設計になっています(第5章)。
  5. 実務では、責務ごとに層を分け、入力を検証し、例外を一元管理することで、コードの見通しと壊れにくさが保たれます(第6章)。

このコースは読み物として、Springアプリの「地図」を描くことを目的にしていました。実際に手を動かして開発を始める際は、Spring公式の start.spring.io でプロジェクトの雛形を作り、ここで学んだ @Component@RestController を実際に書きながら、この地図を何度も見返してみてください。この先には、認証認可を扱う Spring Security や、マイクロサービス間の連携といった、さらに広い世界が待っています。

やってみよう

この章のまとめ図を見ずに、「クライアントがリクエストを送ってから、レスポンスが返るまで」に登場する層とアノテーションを、自分の言葉で説明できるか試してみましょう。詰まった箇所があれば、対応する章に戻って読み返すと、知識のつながりがより強固になります。