2016-07-11 9 views
0

明らかに、AnnotationConfigApplicationContext#scan()は再帰的にパッケージをスキャンします。春のパッケージの非再帰スキャン

私は確信していませんが、私の@Componentクラスのうちの1つは、上記のパッケージのサブパッケージ内にあることを除いて明示的には言及されていません。

最初の質問:Springがパッケージを再帰的にスキャンするのは本当ですか?

2番目の質問は、それが本当だった場合、これを無効にする方法ですか?

答えて

0

Spring @Component API

に述べたように、注釈付きクラスが "コンポーネント" であることを示しています。そのようなクラスは、注釈ベースの構成を使用する場合はの自動検出の候補となり、のクラスパスの走査の場合はの候補とみなされます。スキャンおよび/または注釈を付ける&設定がthis answerをチェックした構成について

、私はサブパッケージのスキャンを無効にすることについて、それをより良い

+0

再帰について任意の単語が表示されないのですか? – Dims

+0

@Dims AFAIK、anotatingは再帰、自動検出/スキャン、はいを使用しません。 –

+0

だから、質問はスキャンについてです:それは再帰的で、それを制御する方法ですか?これについては – Dims

0

を説明することはできません:私はthisがあなたの質問に答えると思います(または第二の最も投票の答えのために質問)。あなたの@Configurationファイルで

0

、それが明示的に@ComponentScan注釈を経由してスキャンする必要のあるパッケージを定義することも可能です。例えば

@Configuration 
@ComponentScan(basePackages = "my.package.first, my.package.second, 
       my.package.etc") 

ただし、これらのパッケージのサブパッケージ内のすべてのコンポーネントが自動的に含まれます。あなたはこれを無効にしたい場合は、これは@ComponentScanするフィルタを適用することによって行うことができる

すなわち

@ComponentScan(basePackages = "my.package", excludeFilters = 
       @ComponentScan.Filter(type = FilterType.ASPECTJ, 
       pattern = "my.package.*")) 
関連する問題