Spring Framework / Spring Boot

作成: 2026.03.24更新: 2026.03.24

Spring Framework / Spring Boot とは

Spring Framework は、Java アプリケーション開発のための包括的なフレームワークである。2003 年に Rod Johnson によって公開され、当時複雑だった Java EE(現 Jakarta EE)の開発を大幅に簡素化する目的で設計された。現在では Java によるエンタープライズ開発の事実上の標準となっている。

Spring Boot は 2014 年に登場した Spring Framework の拡張プロジェクトで、煩雑だった Spring の初期設定を自動化し、すぐにアプリケーション開発を始められるようにしたものである。

なぜ SIer で重要か

SIer の新規 Java プロジェクトでは、ほぼ例外なく Spring Boot が採用されている。Spring は業務システムに求められるトランザクション管理、セキュリティ、データベースアクセスなどの機能を網羅しており、大規模開発に必要な機能が一通り揃っている。また、Spring の知識は SIer の Java 案件で共通言語として通用するため、新入社員が最初に学ぶべきフレームワークと言える。

基本概念

DI(依存性注入)

DI は Spring の最も重要な概念である。あるクラスが別のクラスを利用するとき、利用する側が直接インスタンスを生成するのではなく、外部(Spring コンテナ)からインスタンスを注入してもらう仕組みを指す。

// DI を使わない場合(密結合)
public class OrderService {
    private OrderRepository repository = new OrderRepositoryImpl();
}

// DI を使う場合(疎結合)
@Service
public class OrderService {
    private final OrderRepository repository;

    @Autowired
    public OrderService(OrderRepository repository) {
        this.repository = repository;
    }
}

DI を使うことで、クラス間の結合度が下がり、テストしやすく変更に強いコードを書ける。

AOP(アスペクト指向プログラミング)

AOP は、ログ出力やトランザクション管理、認可チェックなど、複数のクラスに横断的に適用される処理(横断的関心事)を本来のビジネスロジックから分離する仕組みである。Spring では @Transactional アノテーションを付けるだけでトランザクション管理が自動適用されるが、これは AOP の仕組みで実現されている。

Spring Boot の自動設定

Spring Boot は「Convention over Configuration(設定より規約)」の思想に基づき、クラスパスに存在するライブラリを検出して自動的に設定を行う。たとえば、spring-boot-starter-web を依存関係に追加するだけで、組み込み Tomcat サーバが起動し、Spring MVC の設定が自動で行われる。

主要モジュール

モジュール役割
Spring MVCWeb アプリケーション開発(Controller, REST API)
Spring Security認証・認可の仕組みを提供
Spring Data JPAJPA を使ったデータベースアクセスを簡素化
Spring Batch大量データのバッチ処理フレームワーク
Spring AOPアスペクト指向プログラミングのサポート

SIer での使われ方

新規開発の標準

SIer の新規 Java プロジェクトでは、Spring Boot をベースにしたアプリケーション開発が標準となっている。プロジェクト開始時には Spring Initializr でひな形を生成し、必要なスターター(starter)を追加していく流れが一般的である。

TERASOLUNA との関係

NTTデータが策定した開発ガイドライン「TERASOLUNA」は Spring Framework をベースにしており、NTTデータ系の案件では TERASOLUNA のガイドラインに従って Spring を使うことが多い。

Spring と Jakarta EE の関係

Spring は元々 Java EE(現 Jakarta EE)の複雑さを解消するために生まれたが、両者は対立するものではない。Spring は内部的に Jakarta EE の仕様(Servlet、JPA、Bean Validation 等)を利用しており、Jakarta EE の仕様を Spring が使いやすくラップしているという関係にある。SIer の現場では「Jakarta EE のアプリケーションサーバ上で動く Spring アプリケーション」という構成も珍しくない。

まとめ

  • Spring Framework は Java エンタープライズ開発の事実上の標準フレームワークであり、DI と AOP が中核概念である
  • Spring Boot の登場によりセットアップが劇的に簡素化され、新規開発では Spring Boot がほぼ標準となった
  • DI によりクラス間の結合度を下げ、テストしやすく保守性の高いコードを実現できる
  • SIer の Java 案件では Spring の知識が共通言語として求められるため、最初に習得すべき技術である
  • TERASOLUNA など SIer 独自のガイドラインも Spring をベースにしていることが多い