2008年06月15日

2.2. The Inversion of Control (IoC) container

2.2 IoC コンテナ

IoCコンテナはバージョン2.0および2.5において多くの機能改善がなされた部分です。

2.2.1 新規のBeanスコープ
Springの以前のバージョンでは、Beanスコープを二種類(シングルトンとプロトタイプ)だけサポートするIoCコンテナレベルがありました。Spring 2.0ではSpringがデプロイされる環境に依存したスコープ(たとえばWeb環境におけるRequestスコープやSessionスコープなど)が追加され、さらに統合ポイントが提供されることによってユーザ自身でスコープを作成することができるようになりました。

シングルトンスコープおよびプロトタイプスコープを持つBeanの基礎となる内部的な実装は変更されていますが、この変更はユーザには影響を与えません。既存の設定は変更することなく、また設定が壊れることなく引き続き使用することができます。

新しいスコープと既存のスコープについての詳細は3.4章 「Beanスコープ」に記述されています。

2.2.2 扱いやすいXMLによる設定
SpringのXML設定は、XMLスキーマに基づく構文の改良によりだいぶ簡単なものになりました。Springが新しく提供するタグを活用するためには、付録A 「XMLスキーマに基づく設定」を参照してください。新しいタグを使用することによって設定の無駄を省き、可読性を上げることができるため、Springチームはこれを使用することを推奨します。

さらに、XMLスキーマベースの設定が使用できない場合に参照する必要があれば、Spring 2.0のためにアップデートされたDTDを使用することができます。下に示したDOCTYPE宣言をそのまま使用することができますが、興味をもたれた方は、Spring2.5配布ディレクトリに含まれる「dist/resources」ディレクトリ下の「spring-beans-2.0.dtd」を読まれることをお勧めします。


<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"
"http://www.springframework.org/dtd/spring-beans-2.0.dtd">


2.2.3 拡張可能なXML記述
XML設定は容易に記述できるだけでなく、拡張可能なものとなりました。
「拡張可能」という言葉が意味するところは、利用者自身(つまり開発者やサードパーティフレームワークや製品の提供者)がカスタムタグを作成し、他の開発者がそれをSpringのコンフィグファイル中で使用できるということです。これによって個別のコンポーネントの設定の中に、ユーザが扱っている(広い意味での)領域に特有の用語を反映させることができる様になります。
Springのカスタムタグを作成することは、個々のプロジェクトのアプリケーション開発者やエンタープライズアーキテクトにとっては興味のないことでしょう。しかしサードパーティのベンダにとって、Springコンフィグファイル中で使用できる独自の設定用タグを開発することが魅力的と感じてもらえることを期待しています。
コンフィグの拡張機構については付録B 「拡張可能なXML記述」に記してあります。

2.2.4 アノテーションを使用した設定
Spring 2.0からさまざまなアノテーションが設定のために導入されました。たとえば@Transactional、@Required、@PersistenceContext、@PersistenceUnitなどが挙げられます。
Spring 2.5ではさらに設定を完全にこなせるだけのアノテーションを導入しました。JSR-250アノテーションである@Resource、@PostConstruct、@PreDestroyのサポートとともに@Autowiredが追加されました。
アノテーションを使用したBeanの設定は3.11章 「アノテーションによる設定」にて示されています。Spring MVCにおけるアノテーションのサポートについては2.5.3章 「アノテーションベースのコントローラ」についても参照してください。

2.2.5 クラスパスにあるコンポーネントの自動検出
Spring 2.5ではコンポーネントスキャンによって、クラスパスに配置されているアノテーションを使用したコンポーネントを自動検出することができます。一般的にそのようなコンポーネントクラスには@Component、@Repository、@Service、@Controllerといったステレオタイプアノテーションが記述されるはずです。ApplicationContextの設定しだいでそのようなコンポーネントクラスを自動検出の対象としてSpringのBean定義に組み込むことができます。その際にはそれぞれのBeanのための明示的な設定は必要ありません。
アノテーションを使用したBeanの設定は3.12.1章 「@Componentとその他のステレオタイプアノテーション」にて述べられています。
ラベル:SpringFramework2.5
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。