アノテーションインターフェース 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
関連事項:
  • 要素の詳細

    • value

      @AliasFor("basePackages") StringSE[] value
      basePackages() のエイリアス。

      他の属性が必要ない場合は、より簡潔なアノテーション宣言を許可します。— たとえば、@ComponentScan(basePackages = "org.my.pkg") ではなく @ComponentScan("org.my.pkg") です。

      デフォルト:
      {}
    • basePackages

      @AliasFor("value") StringSE[] basePackages
      アノテーション付きコンポーネントをスキャンするベースパッケージ。

      value() は、この属性のエイリアスです(相互に排他的です)。

      文字列ベースのパッケージ名に代わる型安全な代替手段として basePackageClasses() を使用します。

      デフォルト:
      {}
    • basePackageClasses

      ClassSE<?>[] basePackageClasses
      アノテーション付きコンポーネントをスキャンするパッケージを指定するための、basePackages() の型安全な代替。指定された各クラスのパッケージがスキャンされます。

      この属性によって参照される以外の目的を果たさない特別なノーオペレーションマーカークラスまたはインターフェースを各パッケージに作成することを検討してください。

      デフォルト:
      {}
    • nameGenerator

      ClassSE<? extends BeanNameGenerator> nameGenerator
      Spring コンテナー内で検出されたコンポーネントの命名に使用される BeanNameGenerator クラス。

      BeanNameGenerator インターフェース自体のデフォルト値は、この @ComponentScan アノテーションの処理に使用されるスキャナーが、継承された Bean 名前ジェネレーターを使用する必要があることを示します。デフォルトの AnnotationBeanNameGenerator またはブートストラップ時にアプリケーションコンテキストに提供されるカスタムインスタンス。

      関連事項:
      デフォルト:
      org.springframework.beans.factory.support.BeanNameGenerator.class
    • scopeResolver

      ClassSE<? extends ScopeMetadataResolver> scopeResolver
      検出されたコンポーネントの範囲を解決するために使用される ScopeMetadataResolver
      デフォルト:
      org.springframework.context.annotation.AnnotationScopeMetadataResolver.class
    • scopedProxy

      ScopedProxyMode scopedProxy
      検出されたコンポーネントに対してプロキシを生成する必要があるかどうかを示します。これは、スコープをプロキシスタイルで使用する場合に必要になる可能性があります。

      デフォルトは、実際のスキャンの実行に使用されるコンポーネントスキャナーのデフォルトの動作に従います。

      この属性を設定すると、scopeResolver() に設定された値がオーバーライドされることに注意してください。

      関連事項:
      デフォルト:
      DEFAULT
    • resourcePattern

      StringSE resourcePattern
      コンポーネント検出に適格なクラスファイルを制御します。

      より柔軟なアプローチのために、includeFilters() および excludeFilters() の使用を検討してください。

      デフォルト:
      "**/*.class"
    • useDefaultFilters

      boolean useDefaultFilters
      @Component@Repository@Service または @Controller アノテーションが付けられたクラスの自動検出を有効にする必要があるかどうかを示します。
      デフォルト:
      true
    • includeFilters

      ComponentScan.Filter[] includeFilters
      コンポーネントのスキャンに適格な型を指定します。

      basePackages() のすべてから、指定されたフィルターに一致する基本パッケージのすべてに、候補コンポーネントのセットをさらに絞り込みます。

      これらのフィルターは、指定されている場合、デフォルトのフィルターに加えて適用されることに注意してください。デフォルトのフィルターに一致しない場合(つまり、@Component でアノテーションが付けられていない場合)でも、指定されたフィルターに一致する指定された基本パッケージのすべての型が含まれます。

      関連事項:
      デフォルト:
      {}
    • excludeFilters

      ComponentScan.Filter[] excludeFilters
      コンポーネントのスキャンに適さない型を指定します。
      関連事項:
      デフォルト:
      {}
    • lazyInit

      boolean lazyInit
      スキャンされた Bean を遅延初期化用に登録するかどうかを指定します。

      デフォルトは false です。必要に応じて、これを true に切り替えます。

      導入:
      4.1
      デフォルト:
      false