ファイヤープロジェクト
Spring入門(Spring1.2RC2)
2005-05-05T23:30+09:00   matsu
Springフレームワークは機能的に盛りだくさんのようなので,まず最初に全体を概観してみる.
Springは,Apache License Version 2.0で配布されている,エンタープライズ向けアプリケーションの開発を容易にするための,軽量なフレームワークである. Springには以下の特徴がある.
  • トランザクション管理
  • RMIかWebサービスを使用したリモートアクセス
  • メール機能
  • DB連係機能
  • MVC
  • 透過的なAOPを組み込み
  • プロプラの例外構造からの自動マッピングを含む例外構造
開発者はこれら盛りだくさんのSpringの特徴,あるいは機能から,所望のものを選択して使用することができる. さらにSpringで作成されたアプリケーションは,Springに依存しないものにすることができるらしい(※). Springは以下のような構成になっている(本家に一見分かりやすそうな図がある).
  • 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をWebWorkやStrutsと一緒に使用する場合に,Webが統合する役割を果たすらしい.
SpringのMVC実装は単なる実装ではなく,ドメインモデルコードとWebフォームを明確に分離し,バリデーションなどのSpringフレームワークの機能を全て使用できるようになっている.
matsu(C)
Since 2002
Mail to matsu