ApplicationContext(2)

Context名前空間

Spring2.5から利用可能。

アノテーションによる自動インジェクションや、自動的なコンテナ登録などをおこなう拡張機能。

context:annotation-configタグ

@Autowire、@Requiredアノテーションを有効にする要素。

また、JSR-250の@Resourceアノテーションなども使用可能になる。

下位要素なし

属性なし

context:component-scanタグ

クラスのコンテナへの登録を自動的に行うための要素。

アノテーションやクラスの正規表現など、柔軟な条件を指定可能。

デフォルトでは@Component, @Repository, @Service, @Controllerアノテーションが設定されているクラスが登録される。

下位要素

  • context:include-filter
  • context:exclude-filter

以下の属性を設定可能 ※name-generatorとscope-resloverの使い方に関してはこちらのサイトで詳細に解説されている

context:include-filterタグ

context:component-scanでの検索結果をフィルタリングするための要素。

この要素で指定した条件を満たす場合のみ、コンテナに登録される。

下位要素なし

以下の属性を設定可能

属性

type*

expression*

説明

フィルターのタイプを以下より選択する

annotation

アノテーションでフィルタリングする

ElementType.TYPEのアノテーションのみ指定可能

assignable

クラス名(インターフェース名)でフィルタリングする

継承された子クラスやインターフェースを実装したクラスも対象となる

aspectj

AspectJスタイルでフィルタリングする

regex

クラス名を正規表現を用いてフィルタリングする

custom

org.springframework.core.type.TypeFilterを実装したクラスによりフィルタリングする

typeで指定したフィルターの詳細条件を指定する

context:exclude-filterタグ

context:component-scanでの検索結果をフィルタリングするための要素。

この要素で指定した条件を満たす場合は、コンテナ登録より除外される。

下位要素なし

以下の属性を設定可能

属性

type*

expression*

説明

context:include-filterと同様

context:include-filterと同様

※注意

include-filterexclude-filterは複数指定可能だが、exclude-filterが優先される。

なので、以下のような記載をしても無意味(Serviceで終わるクラスがすべて除外されるため、なにも登録されない)

<context:component-scan base-package="hoge">
    <context:include-filter type="regex" expression=".*MailService$" />
    <context:exclude-filter type="regex" expression=".*Service$" />
</context:component-scan>

Serviceで終わるクラスのうち、MailServiceで終わるクラスだけを登録したい場合は以下のように記載する。

<context:component-scan base-package="hoge">
    <context:exclude-filter type="regex" expression=".*Service$ &amp;&amp; !.*MailService$" />
</context:component-scan>

context:load-time-weaverタグ

context:mbean-exportタグ

context:mbean-serverタグ

context:property-overrideタグ

context:property-placeholderタグ

前のページ次のページ