Springの概要
概要
- Springは、EJBを主要なフレームワークとして使用する際の不便を解消しました。
- Rod Johnsonが2002年に出版した著書「Expert One-on-One J2EE Design and Development」で紹介したコードが、Springの基盤になりました。
- この本を読んだ開発者たちは、コードが本の中だけに存在するのは惜しいと考え、Rod Johnsonの許可を得てフレームワークへ発展させました。
- Spring Frameworkは2003年6月にApache 2.0 Licenseで初めて公開されました。
- 2004年3月にバージョン1.0がリリースされ、2011年12月にはバージョン3.1が公開されました。
Springの利点
- 生産性
- 品質保証
- 保守性
Springの定義
一般にはSpringと呼びますが、正確な名称はSpring Frameworkです。
- Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。
- Javaエンタープライズ開発を容易にする、軽量なオープンソースアプリケーションフレームワークです。
- Java開発で依存オブジェクトを生成し、組み立てます。
- Java SEのオブジェクト、つまりPOJOをJava EEへ依存させずに接続します。
Spring Frameworkの特徴
- Javaオブジェクトを直接管理する軽量コンテナ
- オブジェクトの生成や破棄などのライフサイクルを管理し、必要なオブジェクトを提供します。
- POJO(Plain Old Java Object)方式のフレームワーク
- https://ja.wikipedia.org/wiki/Plain_Old_Java_Object
- 既存ライブラリを容易にサポートできます。
- IoC(Inversion of Control)をサポート
- ユーザーではなくフレームワークが制御権を持ち、必要に応じてユーザーコードを呼び出します。
- DI(Dependency Injection)をサポート
- 各レイヤーやサービス間に依存関係がある場合、フレームワークが相互に接続します。
- AOP(Aspect-Oriented Programming)をサポート
- トランザクション、ロギング、セキュリティなど、複数のモジュールで共通して使用する機能を分離して管理できます。
- 永続化に関連するさまざまなサービスをサポート
- iBatisやHibernateなど、完成度の高いデータベース処理ライブラリと連携するインターフェースを提供します。
- 高い拡張性
- 既存ライブラリを簡単な連携レイヤーでラップするとSpringで使用できます。多くのライブラリがすでにSpringをサポートしており、Spring向けの連携部分も容易に分離できます。
Spring Frameworkの構成

- Spring Core
- Spring Frameworkの基盤となるIoC、つまりDI機能を提供し、
BeanFactoryを通じてBeanクラスを制御します。
- Spring Frameworkの基盤となるIoC、つまりDI機能を提供し、
- Spring Context
- Spring Coreに追加機能を加え、より簡単な開発を支援します。JNDIやEJB向けのアダプターも含みます。
- Spring DAO
- JDBCベースのDAOを、少ないコードで簡単かつ一貫した方法により開発できるよう支援します。
- Spring ORM
- Hibernate、iBatis、JDOなどのオブジェクトリレーショナルマッピングフレームワークとの統合を支援します。
- Spring AOP
- AOP Allianceを基盤としたAspect-Oriented Programmingのサポートを提供します。
- Spring Web
WebApplicationContextやマルチパートリクエストなど、Webアプリケーション開発に必要な機能を提供し、StrutsやWebWorkなどのフレームワークとの統合を支援します。
- Spring Web MVC
- Web UIレイヤー向けに独立したModel-View-Controller実装を提供します。StrutsやWebWorkが担っていた機能を置き換え、Velocity、Excel、PDFなどのUI技術を使用するAPIも提供します。