Spring入門(Spring1.2RC2)
Springフレームワークは機能的に盛りだくさんのようなので,まず最初に全体を概観してみる.
Springは,Apache License Version 2.0で配布されている,エンタープライズ向けアプリケーションの開発を容易にするための,軽量なフレームワークである.
Springには以下の特徴がある.
- トランザクション管理
- RMIかWebサービスを使用したリモートアクセス
- メール機能
- DB連係機能
- MVC
- 透過的なAOPを組み込み
- プロプラの例外構造からの自動マッピングを含む例外構造
- Spring Core
- Spring Context
- Spring DAO
- Spring ORM
- Spring AOP
- Spring Web
- Spring Web MVC
※ たぶん「やっぱりSpringを使いたくない」と思ったときに,容易に切り離せるように工夫してあるという意味合いだと思う.
Springフレームワークの基本部分.
DI(Depencency Injection)機能を提供する.
BeanFactoryというFactoryパターンが基本コンセプトで以下を実現する.
- プログラミングによるSingletonの必要性の排除.
- プログラムの設定依存の切り離し.
JNDIのようなフレームワークスタイルのようなBeanへのアクセス方法を提供する.
さらに以下の特徴がある.
- リソースバンドル
- イベント伝播
- リソースロード
- サーブレットコンテナのような透過的コンテキストの作成
JDBCのAbstraction層として機能する.
つまらないJDBCコーディングやベンダ特有のエラーコードの解析を行う.
さらに特定のインタフェースの実装クラスのみでなく,各アプリケーション特有のPOJO(Plain Old Java Objects)の明示的なトランザクション管理ができる.
ORMは,JDO,Hibernate,iBatisといった有名なO/Rマッピングのための統合層を提供する.
ORMによって,Springの他の機能と上記O/Rマッピングツールを組み合わせて使用することができる.
AOPによって,メソッドに処理をインターセプトする定義ができるようになる.
ソースのメタデータ(※)を使用して処理内容を組み込む.
つまりアスペクト指向プログラミングを可能にするモジュールである.
※ JavaDoc用のタグ付きのデータをイメージすればよいだろうか.
WebはWebアプリケーションのための機能を提供する.
- マルチパート機能
- サーブレットリスナを使用したコンテキスト初期化
- Web指向のアプリケーションコンテキスト
SpringのMVC実装は単なる実装ではなく,ドメインモデルコードとWebフォームを明確に分離し,バリデーションなどのSpringフレームワークの機能を全て使用できるようになっている.

