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 Core | DIコンテナの核心。Beanの管理 |
| Spring MVC | WebのリクエストをJavaで処理するHTTPルーティング |
| Spring Data | データベースアクセスを簡素化 |
| Spring Security | 認証・認可(ログインや権限管理)を担当 |
| Spring Boot | Springの設定を自動化し、すぐ動かせる形に整えた拡張版 |
| 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 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-330 | DIの標準アノテーション(@Inject など)。SpringはこれをサポートするDIコンテナの一実装 |
| Servlet仕様(Jakarta Servlet) | Spring MVCが内部で使うHTTPリクエスト処理の基盤仕様 |
関連用語
- ./148-java.md — Spring Frameworkが動作するプログラミング言語
- ./150-dependency-injection.md — Springの核心概念。部品を外から注入する設計パターン
- ./151-spring-boot.md — Springの設定を自動化し即起動できるようにした拡張版
- ./152-maven-gradle.md — Springプロジェクトのライブラリ管理・ビルドツール
- ./153-rest-api.md — Spring MVCやSpring WebFluxで実装されることが多いAPI形式
- ./154-microservices.md — Springが得意とするサービス分割アーキテクチャ
- ./155-orm.md — Spring Dataが活用するオブジェクト-RDB対応技術
- ./156-authentication-authorization.md — Spring Securityが担う認証・認可の仕組み