※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

Spring

ロッド・ジョンソン氏を中心に開発されたJava/J2EEフレームワーク

DIコンテナという軽量コンテナをベースに、AOP、MVCフレームワーク、JDBCを抽象化したフレームワーク、既存フレームワークとのインテグレーション機能などを開発者に提供してくれるアプリケーションアーキテクチャのベースとなるもの。

Webアプリケーションの代表的なフレームワークであるStrutsやHibernateがプレゼンテーション層やデータアクセス層をカバーするフレームワークなのに対し、Springは「すべての層をカバーしているフレームワーク」。

Springの提供する主な機能
  • DIコンテナ
  • MVCフレームワーク
  • JDBC抽象化フレームワーク
  • AOPフレームワーク
  • Webインテグレーション機能
  • ORMインテグレーション機能

POJOで構成された独立した業務ロジック(ビジネス層)を作れることはSpringの設計上の最大の魅力点

DIコンテナのメリット
委譲を利用した、より柔軟なアーキテクチャを構築することができること

DIコンテナはPOJOをシステム内で1つしかインスタンス化する必要のないクラス(Singleton)として管理し、利用者に提供する。
これにより、SingletonのロジックがハードコーディングされていないPOJOの再利用性は高くなる、Singletonクラスが必要でない場合は、Bean定義ファイルに「このクラスはSingletonではない」と宣言すればよい。

DIコンテナとAOP機能を利用することにより、クラスの責務以外の処理をオブジェクトに追加することも可能。

宣言的にオブジェクトに機能を追加できるのはSpringのAOPがSpring DIコンテナをベースにしているから。

DIコンテナでオブジェクトのライフサイクルを管理
→委譲ベースの柔軟なアーキテクチャの実現(変更に強い)

DIコンテナをベースにPOJOで実装
→クラスの理解が容易
→テストが容易

DIコンテナをベースにさまざまなフレームワークを利用可能
→構造の理解が容易
→AOPによる責務以外の処理を分離

クラスの理解が容易
クラスの作成が容易
→AOPによる宣言的な処理の追加
責務以外の振る舞いの追加が容易(変更に強い)