アノテーションインターフェース ComponentScan
@Configuration クラスで使用するコンポーネントスキャンディレクティブを構成します。Spring の <context:component-scan> XML 名前空間要素と同等のサポートを提供します。
basePackageClasses() または basePackages() (またはその別名 value() ) を指定して、スキャンする特定のパッケージを定義できます。特定のパッケージが定義されていない場合、スキャンはこのアノテーションを宣言するクラスのパッケージから再帰的に実行されます。
<context:component-scan> 要素には annotation-config 属性があることに注意してください。ただし、このアノテーションはそうではありません。これは、ほとんどすべての場合で @ComponentScan を使用する場合、デフォルトのアノテーション構成処理(たとえば、@Autowired およびフレンドの処理)が想定されるためです。さらに、AnnotationConfigApplicationContext を使用する場合、アノテーション構成プロセッサーは常に登録されます。つまり、@ComponentScan レベルで無効にしようとしても無視されます。
 使用例については、@Configuration の Javadoc を参照してください。
@ComponentScan は反復可能なSEアノテーションとして使用できます。@ComponentScan は、属性オーバーライドを持つカスタム合成アノテーションを作成するためのメタアノテーションとしても使用できます。
 ローカルで宣言された @ComponentScan アノテーションは常に @ComponentScan メタアノテーションよりも優先され、効果的に隠蔽されます。これにより、明示的なローカル設定でメタに存在する設定 ( @ComponentScan でメタアノテーションが付けられた合成アノテーションを含む) をオーバーライドできるようになります。
- 導入:
- 3.1
- 作成者:
- Chris Beams, Juergen Hoeller, Sam Brannen
- 関連事項:
- ネストされたクラスの要約ネストされたクラス
- オプション要素の概要オプション要素修飾子と型オプションの要素説明- ClassSE<?>[]アノテーション付きコンポーネントをスキャンするパッケージを指定するための、- basePackages()の型安全な代替。- StringSE[]アノテーション付きコンポーネントをスキャンするベースパッケージ。コンポーネントのスキャンに適さない型を指定します。コンポーネントのスキャンに適格な型を指定します。- booleanスキャンされた Bean を遅延初期化用に登録するかどうかを指定します。- ClassSE<? extends BeanNameGenerator>Spring コンテナー内で検出されたコンポーネントの命名に使用される- BeanNameGeneratorクラス。コンポーネント検出に適格なクラスファイルを制御します。検出されたコンポーネントに対してプロキシを生成する必要があるかどうかを示します。これは、スコープをプロキシスタイルで使用する場合に必要になる可能性があります。- ClassSE<? extends ScopeMetadataResolver>検出されたコンポーネントの範囲を解決するために使用される- ScopeMetadataResolver。- boolean- StringSE[]- basePackages()のエイリアス。
- 要素の詳細- value- basePackages()のエイリアス。- 他の属性が必要ない場合は、より簡潔なアノテーション宣言を許可します。— たとえば、 - @ComponentScan(basePackages = "org.my.pkg")ではなく- @ComponentScan("org.my.pkg")です。- デフォルト:
- {}
 
- basePackagesアノテーション付きコンポーネントをスキャンするベースパッケージ。- value()は、この属性のエイリアスです(相互に排他的です)。- 文字列ベースのパッケージ名に代わる型安全な代替手段として - basePackageClasses()を使用します。- デフォルト:
- {}
 
- basePackageClassesClassSE<?>[] basePackageClassesアノテーション付きコンポーネントをスキャンするパッケージを指定するための、- basePackages()の型安全な代替。指定された各クラスのパッケージがスキャンされます。- この属性によって参照される以外の目的を果たさない特別なノーオペレーションマーカークラスまたはインターフェースを各パッケージに作成することを検討してください。 - デフォルト:
- {}
 
- nameGeneratorClassSE<? extends BeanNameGenerator> nameGeneratorSpring コンテナー内で検出されたコンポーネントの命名に使用される- BeanNameGeneratorクラス。- BeanNameGeneratorインターフェース自体のデフォルト値は、この- @ComponentScanアノテーションの処理に使用されるスキャナーが、継承された Bean 名前ジェネレーターを使用する必要があることを示します。デフォルトの- AnnotationBeanNameGeneratorまたはブートストラップ時にアプリケーションコンテキストに提供されるカスタムインスタンス。- 関連事項:
 - デフォルト:
- org.springframework.beans.factory.support.BeanNameGenerator.class
 
- scopeResolverClassSE<? extends ScopeMetadataResolver> scopeResolver検出されたコンポーネントの範囲を解決するために使用される- ScopeMetadataResolver。- デフォルト:
- org.springframework.context.annotation.AnnotationScopeMetadataResolver.class
 
- scopedProxyScopedProxyMode scopedProxy検出されたコンポーネントに対してプロキシを生成する必要があるかどうかを示します。これは、スコープをプロキシスタイルで使用する場合に必要になる可能性があります。- デフォルトは、実際のスキャンの実行に使用されるコンポーネントスキャナーのデフォルトの動作に従います。 - この属性を設定すると、 - scopeResolver()に設定された値がオーバーライドされることに注意してください。- デフォルト:
- DEFAULT
 
- resourcePatternStringSE resourcePatternコンポーネント検出に適格なクラスファイルを制御します。- より柔軟なアプローチのために、 - includeFilters()および- excludeFilters()の使用を検討してください。- デフォルト:
- "**/*.class"
 
- useDefaultFiltersboolean useDefaultFilters- @Component- @Repository、- @Serviceまたは- @Controllerアノテーションが付けられたクラスの自動検出を有効にする必要があるかどうかを示します。- デフォルト:
- true
 
- includeFiltersComponentScan.Filter[] includeFiltersコンポーネントのスキャンに適格な型を指定します。- basePackages()のすべてから、指定されたフィルターに一致する基本パッケージのすべてに、候補コンポーネントのセットをさらに絞り込みます。- これらのフィルターは、指定されている場合、デフォルトのフィルターに加えて適用されることに注意してください。デフォルトのフィルターに一致しない場合(つまり、 - @Componentでアノテーションが付けられていない場合)でも、指定されたフィルターに一致する指定された基本パッケージのすべての型が含まれます。- デフォルト:
- {}
 
- excludeFiltersComponentScan.Filter[] excludeFiltersコンポーネントのスキャンに適さない型を指定します。- 関連事項:
 - デフォルト:
- {}
 
- lazyInitboolean lazyInitスキャンされた Bean を遅延初期化用に登録するかどうかを指定します。- デフォルトは - falseです。必要に応じて、これを- trueに切り替えます。- 導入:
- 4.1
 - デフォルト:
- false