Webバックエンド - フレームワーク

Spring Framework すぷりんぐ ふれーむわーく

DI(依存性注入)AOP(アスペクト指向)Spring BootJavaWebアプリケーションBean
Spring Frameworkについて教えて

簡単に言うとこんな感じ!

Javaでウェブシステムを作るときの「便利な部品セット+設計の土台」だよ!ゼロからビルを建てる代わりに、柱・壁・配管がすでに整ったマンションの骨格を使う感じ。これを使うと開発がめちゃくちゃ速くなるんだ!


Spring Frameworkとは

Spring Framework(スプリング フレームワーク)は、Java言語でエンタープライズ(業務用)アプリケーションを開発するためのオープンソースフレームワークです。2003年に登場して以来、世界中の企業システムで採用されており、現在でもJavaバックエンド開発の事実上の標準として広く使われています。

フレームワークとは「アプリを作る際のルールと便利な部品の集まり」のことです。Spring Frameworkは特に DI(依存性注入: Dependency Injection)AOP(アスペクト指向プログラミング: Aspect-Oriented Programming) という2つの仕組みを核に持ち、複雑な業務ロジックをシンプルかつテストしやすい形で書けるよう設計されています。

ビジネスパーソンの視点で言えば、「Springを採用している」というシステムは、世界標準の設計思想に沿って開発されており、エンジニアの採用・引き継ぎがしやすい、という意味でもあります。多くのSIer(システムインテグレーター)やWeb系企業の開発標準に組み込まれており、発注先がSpring利用経験を持つ確率は非常に高いと言えます。


Springの核心:DIコンテナとモジュール構成

Springの最大の特徴は DIコンテナ です。DIコンテナとは「アプリが必要とする部品(オブジェクト)を自動的に組み立てて渡してくれる仕組み」です。

DIコンテナのイメージ

普通の作り方Springのやり方
自分でパーツを「new」して組み立てる設定に書いておくと自動で組み立ててくれる
テスト時に本物部品しか使えないテスト用の偽部品(モック)に差し替えやすい
変更時に多くの箇所を修正変更箇所が少なく済む

DIで管理される部品のことを Bean(ビーン) と呼びます。Springが起動すると、設定ファイルやアノテーション@Component などの目印)をもとに全Beanを自動登録・注入してくれます。

Springの主要モジュール一覧

モジュール名役割
Spring CoreDIコンテナの核心。Beanの管理
Spring MVCWebのリクエストをJavaで処理するHTTPルーティング
Spring Dataデータベースアクセスを簡素化
Spring Security認証認可(ログインや権限管理)を担当
Spring BootSpringの設定を自動化し、すぐ動かせる形に整えた拡張版
Spring Batch大量データの一括処理(夜間バッチなど)に特化

覚え方:「Spring=春の芽吹き」

「DI(でぃあい)でビーンが芽吹く、それがSpring」

DI・Bean・Spring の三点セットで覚えると理解が深まります。


歴史と背景

  • 2002年 — Rod Johnson(ロッド・ジョンソン)が著書 Expert One-on-One J2EE Design and Development でSpringの前身となるコードを公開
  • 2003年 — Spring Framework 1.0 としてオープンソースリリース。当時の重厚なJavaEE(EJB)に対するアンチテーゼとして登場
  • 2006年 — Spring 2.0。XMLによる設定が大幅に簡略化
  • 2009年 — VMware(後にPivotal)がSpring Sourceを買収。商業サポート体制が整う
  • 2013年Spring Boot 1.0 登場。「設定より規約」の思想で、最小限のコードでSpringアプリが動く形を実現。普及を一気に加速
  • 2017年 — Spring Framework 5.0。リアクティブプログラミング(非同期・高負荷対応)に対応
  • 2022年 — Spring Framework 6.0 / Spring Boot 3.0。Java 17以上が必須となり、GraalVM(ネイティブコンパイル)対応も強化
  • 現在マイクロサービスクラウドネイティブ開発の主力フレームワークとして世界規模で採用継続中

Spring BootとSpring Frameworkの関係

「Spring Boot」という言葉を現場でよく聞くと思いますが、これはSpring Frameworkとどう違うのでしょうか。

Spring Framework(土台・骨格) Spring Core DIコンテナ / Bean管理 Spring MVC Webリクエストのルーティング Spring Data / Security DB・認証・認可 Spring Boot(ラッパー・自動化レイヤー) ✔ 設定の自動化(AutoConfiguration) ✔ 組み込みサーバー(Tomcat内蔵)ですぐ起動 ✔ 依存ライブラリをまとめてバージョン管理 → Spring Frameworkを使いやすく包んだもの

Spring Boot vs 素のSpring Framework

比較項目Spring Framework単体Spring Boot
初期設定の量多い(XML・Java設定が複雑)少ない(AutoConfigurationで自動)
サーバー起動別途Tomcat等を用意jarファイル1つで即起動
学習コスト高め低め
現場での主流レガシーシステムに多い新規開発の大多数

ポイント: 現在の新規開発では「Spring Framework を使う」=「Spring Boot を使う」がほぼ同義です。Spring Bootは単独製品ではなく、Spring Frameworkを使いやすくするツールキットです。


関連する規格・RFC

規格・仕様内容
Jakarta EE(旧Java EE)Springが対応・準拠するJavaエンタープライズ標準仕様群
JSR-330DIの標準アノテーション(@Inject など)。SpringはこれをサポートするDIコンテナの一実装
Servlet仕様(Jakarta Servlet)Spring MVCが内部で使うHTTPリクエスト処理の基盤仕様

関連用語