Chuyển đến nội dung chính

レッスン 1: Spring Boot とは何ですか? — 歴史、建築、そして春の生態

Spring Framework と Spring Boot の概要。 Spring 1.0 から Spring Boot 4.x までの開発履歴。階層化アーキテクチャ、メインモジュール、および Spring Boot をいつ使用するか。

💻 プログラミング — レッスン 0 レッスン 1: Spring Boot とは何ですか? — 歴史、アリ アーキテクチャと Spring エコシステム

Spring Boot 4: 基本から上級まで

パート 1: Spring Boot プラットフォーム

xdev.asia

はじめに

Spring Boot は、バックエンド アプリケーションを構築するための Java エコシステムで最も人気のあるフレームワークです。新興企業から Netflix、Alibaba、Google などの大企業まで、すべてが実稼働システムに Spring Boot を使用しています。

この最初のレッスンでは、Spring Boot とは何か、その開発履歴、全体的なアーキテクチャ、および Spring Boot が Java バックエンド開発の最優先の選択肢となっている理由を学びます。


1. Spring フレームワーク — すべての基礎

1.1 Spring フレームワークとは何ですか?

Spring Framework は、Java プラットフォーム用のアプリケーション フレームワークおよび制御反転 (IoC) コンテナです。複雑で重い J2EE (Java 2 Enterprise Edition) の代替として、2003 年に Rod Johnson によって作成されました。

Spring の基本原則:

  • 制御の反転 (IoC): オブジェクトのライフサイクルを管理するためのフレームワーク
  • 依存関係の注入 (DI): オブジェクトは依存関係を自分で作成するのではなく、外部から受け取ります。
  • アスペクト指向プログラミング (AOP): 横断的な懸念事項 (ロギング、セキュリティ、トランザクション) の分離
  • 設定より規約: 定型コードを最小限に抑える

1.2 純粋な Spring Framework の問題

Spring Boot が登場する前は、Spring プロジェクトをセットアップするには多くの XML または Java Config 構成が必要でした。

<!-- web.xml - Servlet Configuration -->
<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<!-- applicationContext.xml - Bean Configuration -->
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
    <property name="driverClassName" value="org.postgresql.Driver"/>
    <property name="url" value="jdbc:postgresql://localhost:5432/mydb"/>
    <property name="username" value="admin"/>
    <property name="password" value="password"/>
</bean>

<bean id="entityManagerFactory"
      class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <!-- ...hàng chục dòng config nữa... -->
</bean>

開発者は、ビジネス ロジックを開始する前に、数百行の構成を記述する必要があります。これは Spring Boot が解決するために生まれた問題です。


2. Spring Boot — 独自のフレームワーク

2.1 Spring Boot とは何ですか?

Spring Boot は Spring エコシステム内のプロジェクトであり、Spring アプリケーションの作成と実行を簡素化するように設計されています。手動構成の代わりに、Spring Boot は以下を提供します。

  • 自動構成: クラスパス内の依存関係に基づいて自動的に構成します。
  • スターター依存関係: ユースケースごとに事前に選択された依存関係「パッケージ」
  • 組み込みサーバー: Tomcat/Jetty/Undertow は直接組み込まれているため、WAR を展開する必要はありません。
  • 本番環境に対応した機能: ヘルスチェック、メトリクス、外部化された構成
// Toàn bộ code cần thiết để chạy một web application
@SpringBootApplication
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

2.2 Spring Framework と Spring Boot の比較

基準Spring フレームワークスプリングブーツ
構成マニュアル (XML/Java)自動構成
サーバー外部 (Tomcat WAR)組み込みサーバー
依存関係各ライブラリを手動で選択するスターターの依存関係
セットアップ時間毎時数分
学習曲線曹操平均
柔軟性最大独自のデフォルト設定があります

##3. 開発経緯

3.1 タイムライン

2003 ─── Spring Framework 1.0 (Rod Johnson)
  │       └── Giải pháp thay thế J2EE
2006 ─── Spring 2.0
  │       └── Annotation-based configuration
2009 ─── Spring 3.0
  │       └── Java-based configuration (@Configuration)
2013 ─── Spring 4.0 + WebSocket support
  │
2014 ─── Spring Boot 1.0 🎉
  │       └── Auto-configuration, embedded server
2017 ─── Spring Boot 2.0
  │       └── Spring Framework 5, Reactive (WebFlux)
2022 ─── Spring Boot 3.0
  │       └── Jakarta EE 9+, Java 17+, GraalVM Native
2024 ─── Spring Boot 3.4
  │       └── Virtual Threads GA, Structured Concurrency
2025 ─── Spring Boot 4.0 🚀
  │       └── Spring Framework 7, Java 17+ baseline,
  │           Jackson 3, JUnit Jupiter 6, Hibernate 7
2026 ─── Spring Boot 4.0.5 (Latest Stable)
          └── gRPC support, enhanced observability

3.2 Spring Boot 4.x — 重要な新ポイント

Spring Boot 4.0 は、次の点で大きな前進を遂げています。

  • Spring Framework 7: ベースライン Java 17、最新の Java 機能を完全に採用
  • Jakarta EE 11: javax.* から jakarta.* への移行を継続します。
  • Hibernate ORM 7: パフォーマンスとクエリの最適化が向上しました。
  • JUnit Jupiter 6: 多くの機能を備えた新しいテスト フレームワーク
  • Jackson 3: Jackson 2 からの重大な変更を伴う JSON 処理
  • 仮想スレッド: Project Loom のネイティブ サポート
  • GraalVM ネイティブ イメージ: ネイティブ コンパイルの最上級のサポート
  • gRPC サポート: Spring gRPC サーバーとクライアントの自動構成
  • 可観測性の強化: OpenTelemetry のより深い統合

4. Spring Boot の概要アーキテクチャ

4.1 階層化アーキテクチャ

┌─────────────────────────────────────────┐
│           Presentation Layer            │
│  (Controllers, REST APIs, WebSocket)    │
├─────────────────────────────────────────┤
│            Service Layer                │
│  (Business Logic, Validation)           │
├─────────────────────────────────────────┤
│           Repository Layer              │
│  (Data Access, JPA, JDBC)               │
├─────────────────────────────────────────┤
│            Database Layer               │
│  (PostgreSQL, MySQL, MongoDB, Redis)    │
└─────────────────────────────────────────┘

4.2 Spring エコシステムの主要モジュール

モジュール説明
スプリングコアIoCコンテナ、DI、AOP
Spring Web MVCREST API、コントローラー、ビューリゾルバー
春のデータJPA、MongoDB、Redis、Elasticsearch
スプリングセキュリティ認証、認可、OAuth2
春の雲マイクロサービス、構成サーバー、ゲートウェイ
春バッチバッチ処理、ETL ジョブ
春の統合エンタープライズ統合パターン
スプリングブーツアクチュエーターヘルスチェック、メトリクス、モニタリング

5. Spring Boot をいつ使用する必要がありますか?

5.1 適切な使用例

  • REST API / マイクロサービス: これは最も一般的な使用例です
  • エンタープライズ アプリケーション: 銀行、保険、医療システム
  • イベント駆動型システム: Kafka と RabbitMQ の統合
  • バッチ処理: ETL ジョブ、データ パイプライン
  • リアルタイム アプリケーション: WebSocket、サーバー送信イベント

5.2 Spring Boot を使用すべきでないのはどのような場合ですか?

  • シンプルなサーバーレス機能: コールド スタート時間が長い (GraalVM ネイティブを使用しない場合)
  • 非常に軽量なマイクロサービス: Quarkus または Micronaut を検討してください
  • フロントエンドを多用するアプリ: 代わりに Next.js、Nuxt.js を使用してください
  • 単純なスクリプト/CLI ツール: 小さなタスクには過剰な作業

5.3 他のフレームワークとの比較

フレームワーク言語起動時間メモリエコシステム
スプリングブーツジャワ~2s (JVM)、~50ms (ネイティブ)~200MB巨大な
クォーカスジャワ~0.5秒~100MB開発中
ネストJSタイプスクリプト~1秒~80MB大
ジャンゴパイソン~1秒~50MB大
ASP.NETコアC#~1秒~100MB大

6. Hello Spring Boot — 最初のアプリケーション

視覚的にわかるように、わずか数行のコードを含む完全な REST API を次に示します。

@SpringBootApplication
public class HelloApplication {
    public static void main(String[] args) {
        SpringApplication.run(HelloApplication.class, args);
    }
}

@RestController
@RequestMapping("/api")
class HelloController {

    @GetMapping("/hello")
    public Map<String, String> hello() {
        return Map.of(
            "message", "Xin chào Spring Boot 4!",
            "version", "4.0.5",
            "java", System.getProperty("java.version")
        );
    }
}

アプリケーションを実行してアクセスする http://localhost:8080/api/hello:

{
    "message": "Xin chào Spring Boot 4!",
    "version": "4.0.5",
    "java": "21.0.4"
}

XML を構成する必要も、WAR ファイルをデプロイする必要も、Tomcat を個別にインストールする必要もありません。それが Spring Boot の威力です。


概要

  • Spring Boot は、自動構成、組み込みサーバー、およびスターターの依存関係により Spring アプリケーション開発を簡素化するフレームワークです
  • Java 17+ ベースラインを備えた Spring Framework 7 に基づく Spring Boot 4.x (2025-2026)、仮想スレッド、GraalVM Native、gRPC をサポート
  • Spring Boot は、REST API、マイクロサービス、エンタープライズ アプリケーション、イベント駆動型システムに適しています

演習

  1. Spring Framework のコア概念である IoC、DI、AOP について詳しく学びます。自分の言葉で簡単な説明を書いてください
  2. アクセス start.spring.io 利用可能なスターター依存関係を調べます。あなたが最も重要だと考えるスターター 10 人を挙げてください
  3. Spring Boot と既に知っているフレームワーク (NestJS、Django、Express など) の長所と短所を比較します。