2011-01-03 2 views
0

最初に私は同様のquestionを指摘しています。これを設定するのに1時間以上を費やしましたが、PathMatchingResourcePatternResolverはすべてをスキャンします。Springアノテーションベースのコンテナ設定コンテキスト:インクルードと除外フィルタ

私はspecific.xmlからインポートされたcommon.xmlとspecific.xml bean定義ファイルを持っています。コンテキストはspecific.xmlからロードされます。 。するcommon.xmlでは、この要素がある:。cz.instance.transl.serviceのようなパッケージ内のクラスは、*スキャンの対象とすべきではない

<context:component-scan base-package="cz.instance.transl"> 
    <context:exclude-filter type="aspectj" 
     expression="cz.instance.transl.model..* &amp;&amp; cz.instance.transl.service..* &amp;&amp; cz.instance.transl.hooks..*"/> 
    </context:component-scan> 

が、ここではcz.instance.translで他のすべてが*べきですスキャンされます。しかし、PathMatchingResourcePatternResolverはすべてを一致するリソースとしてマークします。これは正規表現でも同じです。

EDITED:specific.xmlでcontext:component-scanを宣言すると、スキャンが開始されず、common.xmlのアノテーションベースの依存関係でNoSuchBeanDefinitionExceptionが返されます。

BTW:XMLスタイルの設定では、コンテキストを読み込むときに "import resource"経由でcommon.xml beansを共有する多くのコンポーネントを持つことができます。注釈ベースのコンテナ構成を使用する場合、これはどのように行われますか?この場合

答えて

2

あなたは、むしろ「と」よりも必要「または」:

<context:exclude-filter type="aspectj" 
    expression="cz.instance.transl.model..* || cz.instance.transl.service..* || cz.instance.transl.hooks..*"/>  
+0

はまだすべてをスキャンします。これは私にとって意味をなさない、私はこれらの3つのパッケージはすべて除外される必要があります。 "これはこれかこれを除外するか、これは本当に混乱します:-) – lisak

+0

@lisak:除外フィルタはパッケージを除外せず、クラスを除外します:excludeクラスがこのパッケージまたはそのパッケージに属していれば除外します – axtavt

+0

問題があります"import resource"を指定すると、context:component-scanが特定のxmlにBean定義で適用され、そこに宣言されていないインポートされたリソースに依存がある場合、NoSuchBeanDefinitionExceptionで失敗します。 – lisak

関連する問題