@Retention(value=RUNTIME) @Target(value=TYPE) @Documented @Repeatable(value=ComponentScans.class) public @interface ComponentScan
Configuration
クラスで使用するコンポーネントスキャンディレクティブを構成します。Spring XML の <context:component-scan>
要素と並行してサポートを提供します。basePackageClasses()
または basePackages()
(またはその別名 value()
)のいずれかを指定して、スキャンする特定のパッケージを定義できます。特定のパッケージが定義されていない場合、このアノテーションを宣言するクラスのパッケージからスキャンが行われます。
<context:component-scan>
要素には annotation-config
属性があることに注意してください。ただし、このアノテーションはそうではありません。これは、ほとんどすべての場合で @ComponentScan
を使用する場合、デフォルトのアノテーション構成処理(たとえば、@Autowired
およびフレンドの処理)が想定されるためです。さらに、AnnotationConfigApplicationContext
を使用する場合、アノテーション構成プロセッサーは常に登録されます。つまり、@ComponentScan
レベルで無効にしようとしても無視されます。
使用例については、@Configuration
の Javadoc を参照してください。
Configuration
修飾子と型 | オプションの要素と説明 |
---|---|
java.lang.Class<?>[] | basePackageClasses アノテーション付きコンポーネントをスキャンするパッケージを指定するための、 basePackages() の型安全な代替。 |
java.lang.String[] | basePackages アノテーション付きコンポーネントをスキャンするベースパッケージ。 |
ComponentScan.Filter[] | excludeFilters コンポーネントのスキャンに適さない型を指定します。 |
ComponentScan.Filter[] | includeFilters コンポーネントのスキャンに適格な型を指定します。 |
boolean | lazyInit スキャンされた Bean を遅延初期化用に登録するかどうかを指定します。 |
java.lang.Class<? extends BeanNameGenerator> | nameGenerator Spring コンテナー内で検出されたコンポーネントの命名に使用される BeanNameGenerator クラス。 |
java.lang.String | resourcePattern コンポーネント検出に適格なクラスファイルを制御します。 |
ScopedProxyMode | scopedProxy 検出されたコンポーネントに対してプロキシを生成する必要があるかどうかを示します。これは、スコープをプロキシスタイルで使用する場合に必要になる可能性があります。 |
java.lang.Class<? extends ScopeMetadataResolver> | scopeResolver 検出されたコンポーネントの範囲を解決するために使用される ScopeMetadataResolver 。 |
boolean | useDefaultFilters |
java.lang.String[] | value basePackages() のエイリアス。 |
@AliasFor(value="basePackages") public abstract java.lang.String[] value
basePackages()
のエイリアス。 他の属性が必要ない場合は、より簡潔なアノテーション宣言を許可します。— たとえば、@ComponentScan(basePackages = "org.my.pkg")
ではなく @ComponentScan("org.my.pkg")
です。
@AliasFor(value="value") public abstract java.lang.String[] basePackages
value()
は、この属性のエイリアスです(相互に排他的です)。
文字列ベースのパッケージ名に代わる型安全な代替手段として basePackageClasses()
を使用します。
public abstract java.lang.Class<?>[] basePackageClasses
basePackages()
の型安全な代替。指定された各クラスのパッケージがスキャンされます。この属性によって参照される以外の目的を果たさない特別なノーオペレーションマーカークラスまたはインターフェースを各パッケージに作成することを検討してください。
public abstract java.lang.Class<? extends BeanNameGenerator> nameGenerator
BeanNameGenerator
クラス。BeanNameGenerator
インターフェース自体のデフォルト値は、この @ComponentScan
アノテーションの処理に使用されるスキャナーが、継承された Bean 名前ジェネレーターを使用する必要があることを示します。デフォルトの AnnotationBeanNameGenerator
またはブートストラップ時にアプリケーションコンテキストに提供されるカスタムインスタンス。
public abstract java.lang.Class<? extends ScopeMetadataResolver> scopeResolver
ScopeMetadataResolver
。public abstract ScopedProxyMode scopedProxy
デフォルトは、実際のスキャンの実行に使用されるコンポーネントスキャナーのデフォルトの動作に従います。
この属性を設定すると、scopeResolver()
に設定された値がオーバーライドされることに注意してください。
public abstract java.lang.String resourcePattern
より柔軟なアプローチのために、includeFilters()
および excludeFilters()
の使用を検討してください。
public abstract boolean useDefaultFilters
@Component
@Repository
、@Service
または @Controller
アノテーションが付けられたクラスの自動検出を有効にする必要があるかどうかを示します。public abstract ComponentScan.Filter[] includeFilters
basePackages()
のすべてから、指定されたフィルターに一致する基本パッケージのすべてに、候補コンポーネントのセットをさらに絞り込みます。
これらのフィルターは、指定されている場合、デフォルトのフィルターに加えて適用されることに注意してください。デフォルトのフィルターに一致しない場合(つまり、@Component
でアノテーションが付けられていない場合)でも、指定されたフィルターに一致する指定された基本パッケージのすべての型が含まれます。
public abstract ComponentScan.Filter[] excludeFilters
resourcePattern()