Spring FrameworkとSpring Bootは、Java開発において異なる役割を持つツールだ。どのような目的を持って登場し、ソフトウェアアーキテクトやプログラマーにどう役立つのかを整理する。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
「Spring Boot」と「Spring Framework」の主な違いは、Spring Frameworkが多くのSpringプロジェクトが依存する基盤となる軽量アプリケーション開発フレームワークであるのに対し、Spring Bootは複数のSpringプロジェクトを統合して構成するアプリケーションアクセラレータである点だ。
Spring Bootは、開発者が複数のSpringプロジェクトをまとめて迅速に立ち上げる(ブートストラップする)のに役立つことが、その名前の由来になっている。
Spring Frameworkはロッド・ジョンソン氏によって考案され、2004年にv1.0がリリースされた。Spring Frameworkは「Dependency Injection(DI:依存性の注入)」と「Inversion of Control(IoC:制御の反転)」のためのシンプルな小型コンポーネントにより、Java開発をシンプルにすることを目的としている。
エンタープライズ規模のアプリケーションは、ライフサイクル管理を必要とするコンポーネントやテクノロジー(データの永続化、RESTful API、Webサイトの開発、単体テストなど)が多数存在するため、構築するのは容易ではない。
SpringのIoCコンテナは、開発者が一般的に使用するコンポーネントやテクノロジーのライフサイクル管理や設定を容易にする方法を提供する。
Spring Frameworkの人気が高まるにつれ、専門分野に特化する各種Springサブプロジェクトが登場している。現在、「Spring Boot Initializer」では、さまざまなSpringサブプロジェクトが21の異なるカテゴリーに分類され、各カテゴリーには少なくとも5つのサブプロジェクトが含まれる。以下にその例を示す。
ソフトウェアアーキテクトが、10〜20のSpringプロジェクトを1つの開発環境にまとめる責任を負う場合、独立したSpringプロジェクトを寄せ集めて組み合わせ、エラーのない開発環境を構成、統合、ブートストラップするのは大変な作業だ。そこで考えられたのがSpring Bootだ。
Spring Bootによって、ソフトウェア開発チームにはプロジェクトイニシャライザが提供される。このイニシャライザは、SpringベースのRESTful API、コンソールアプリケーションやマイクロサービスで使用されるさまざまなプロジェクトを選択できるシンプルなメニューを提供する。その選択によって、Spring Bootがエラーのない事前構成済みのMavenプロジェクトまたはGradleプロジェクトを提供する。これにより、プログラマーは開発を即座に開始できる。
これがSpring Bootの目的だ。Spring Bootを活用することで、開発者はSpringアプリケーションをブートストラップし、ソフトウェア開発プロセス全体を加速できる。
Spring Bootのもう一つの大きなメリットは、作成するプロジェクトがソフトウェア開発にSpringファーストのアプローチを取ることにある。Spring Frameworkの場合、IoCとDIをアプリケーションに挿入するタイミングを開発者が自由に選択できる一方、Spring Bootアプリケーションの場合、アプリケーションがSpringベースのDIパターンとIoCパターンを広く使用することを前提としている。ここにSpring Bootが「こだわりのあるフレームワーク」と呼ばれる理由がある。
Springはシンプルなフレームワークで、多くの強力なサブプロジェクトを生み出した。Spring Bootはこのようなプロジェクトの作成と構成を簡素化し、プログラマーがアプリの開発に集中できるようにするアクセラレータツールだ。
Spring Bootにより、プログラマーは低レベルの統合の問題に悩まされることなく、アプリケーションの開発に専念できる。
Copyright © ITmedia, Inc. All Rights Reserved.