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-filter
とexclude-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$ && !.*MailService$" />
</context:component-scan>
context:load-time-weaverタグ
context:mbean-exportタグ
context:mbean-serverタグ
context:property-overrideタグ
context:property-placeholderタグ