概要
概要
Spring Frameworkは、J2EEシステムデザインの著者Rod Johnson 氏により開発がされているフレームワークです。
Springの基盤は、XMLに基づいたBeanファクトリのようなもの(DIコンテナ)で、コンフィグレーションに定義した
ビーンの生成および初期化、関連性を一元管理します。
このようにすることで、クラス間の結合度が低いプログラミングを可能にしています。
この基盤の上に、J2EEのサービスやそのほかの低レベルのフレームワークに仕事をさせる
抽象的なフレームワークが載っかっています。
Springの構成
Core モジュール
Core モジュールは Spring の根幹をなすモジュールであり、オブジェクトの生成・登録、オブジェクト間の関連づけを行う Bean コンテナの機能を提供します。このモジュールにより、必要なオブジェクトの生成および初期化を一元化できるだけでなく、プログラムから Singleton の実装とオブジェクト間の依存関係の実装を排除することができます。
Context モジュール
JNDI のように名前で JavaBeans にアクセスする方法を提供します。Context モジュールの1つである org.springframework.context は Core モジュールである org.springframework.beans パッケージからその機能を継承していますが、サーブレットコンテナによるリソースバンドルやイベント伝播等のテキストメッセージングのサポートが追加されています。
DAO モジュール
JDBC 抽象化レイヤを提供します。このモジュールを使用することで開発者が Connection オブジェクトの取得・破棄、Statement オブジェクトの生成等を利用する側で行う必要がなくなります。
ORM モジュール
JDO, Hibernate, iBatis 等の object/relational mapping API を統合するレイヤを提供します。ORM モジュールを使用することで O/R マッパを Spring の他の機能と組み合わせて使用できるようになります。
AOP モジュール
AOP Alliance と互換性のあるアスペクト指向プログラミングのフレームワークを提供します。AOP モジュールを使用することで、オブジェクト本来の責務以外のロジックを明示的に記述することなく、宣言的に追加することができます。
Web モジュール
基本的な Web 指向の統合機能を提供します。Spring を WebWork や Struts と一緒に使用する場合は、このモジュールが統合を行います。
DI(Dependency Injection)
Dependency Injection (依存性注入) とは、あるクラスが別のクラスをインスタンス変数に持つなどして
利用 (依存) している場合に、インスタンス変数の設定 (依存性の解決) をクラス内で行うのではなく、
外部から設定 (注入) するという考え方です。
Spring の場合は、その外部が Core モジュールである DI コンテナになります。
Dependency Injection のタイプ
Dependency Injection には主に以下の 3つのタイプがあります。
- Interface Injection
- Setter Injection
- Constructor Injection
Springでは、「Setter Injection」、「Constructor Injection」をサポートしていますが、
「Setter Injection」を特に指示しているらしいです。