Dev Study
← Spring コース

10. Spring・Spring Framework・Spring Boot・Bean・DI コンテナ

は、Java のアプリを組み立てる土台のフレームワークです。単に と言うときは、これを土台にしたプロジェクト群の総称であることが多いです。役割が近いのは NestJS で、部品を作って互いに渡す と、Web などの機能を持ちます。HTTP の受け付けを下の層に任せる点も同じで、NestJS では既定で Express、 では です。

DI コンテナは、を作り、それが必要とする相手をの引数などで渡す役です。IoC コンテナとも呼ばれ、Spring では がこれを表します。が作って管理しているオブジェクトが で、NestJS のプロバイダのインスタンスに近いものです。どのを Bean にするかは、 などの(クラスやに付ける印)で伝えます。

は、Spring Framework の上に乗り、単独で起動できるアプリを少ない設定で作れるようにするものです。 の内蔵はその既定の選択で、固定ではありません。混同しやすい点が2つあります。Spring の Bean は、 と setter の名前の付け方の決まりである とは別物です。アノテーションはデコレータに見た目が似ていますが、実行される関数ではなく印です。

点線の付いた語はタップすると説明が出ます。用語集を開く →

Spring の用語の関係(右の → は NestJS で近いもの。たとえです)
Spring Boot自動構成・スターター・内蔵サーバ・実行可能 JAR を足す
NestJS: 独立したものは無い
土台にしている
Spring FrameworkDI コンテナと、Spring MVC・データアクセス・AOP などの機能群
NestJS: NestJS 本体(役割だけ)
その中心
DI コンテナ(IoC コンテナ)Spring では ApplicationContext が表す
NestJS: DI コンテナ
印の付いたクラスや自動構成の設定から作り、相手を渡し、管理する
Bean自分で書いたサービス
NestJS: プロバイダのインスタンス
Bean自分で書いたコントローラ
Bean自分では書いていないもの(自動構成)
  • ・下のコードは、アノテーション・DI コンテナ・Bean・依存性の注入の関係を素の Java でなぞった模型です。Spring の実装ではありません
  • ・公式の自己紹介では、Spring Boot は stand-alone(単独で動く)なアプリを作りやすくするもので、opinionated(既定の選び方を持っている)だと述べています。スターターは、用途ごとに必要な依存をひとまとめにした依存の記述です
  • ・コンポーネントスキャンは、印の付いたクラスを探して Bean として登録することです。自動構成は、クラスパスにある JAR を見て Spring Boot が Bean の設定を足すことです
  • ・Spring MVC は、Servlet の API の上に作られた Web フレームワークで、Spring Framework の一部です。AOP はメソッド呼び出しの前後に処理を挟む仕組みで、そのために本物の代わりに渡される代理のオブジェクトをプロキシと呼びます
  • ・クラスパスとパッケージは前のレッスンの語です。JavaBeans は Sun の JavaBeans 仕様(1.01 版の表紙の日付は1997年8月)の語で、JDK の java.beans パッケージがこの決まりを扱います
  • ・このコースで使う版は Spring Boot 4.1.1 と Spring Framework 7.0.9 です。個々の仕組みは後のレッスンで扱います

▶ サンプルコードを実行してみよう(自由に書き換えてOK)

Java

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

サンプルコードで身につける(5本) →

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

公式ドキュメントで詳しく ↗