クラス ClassPathScanningCandidateComponentProvider

java.lang.ObjectSE
org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider
実装されたすべてのインターフェース:
AwareResourceLoaderAwareEnvironmentCapable
既知の直属サブクラス
ClassPathBeanDefinitionScanner

public class ClassPathScanningCandidateComponentProvider extends ObjectSE implements EnvironmentCapable, ResourceLoaderAware
指定された基本パッケージから開始して候補コンポーネントをスキャンするコンポーネントプロバイダー。コンポーネントインデックスが利用可能な場合はそれを使用でき、利用できない場合はクラスパスをスキャンします。

候補コンポーネントは、除外フィルターと包含フィルターを適用することによって識別されます。AnnotationTypeFilter および AssignableTypeFilter には、Indexed アノテーションが付けられたアノテーション / ターゲット型のインクルードフィルターがサポートされています。他のインクルードフィルターが指定されている場合、インデックスは無視され、代わりにクラスパススキャンが使用されます。

この実装は、Spring の MetadataReader 機能に基づいており、ASM ClassReader によってサポートされています。

導入:
2.5
作成者:
Mark Fisher, Juergen Hoeller, Ramnivas Laddad, Chris Beams, Stephane Nicoll, Sam Brannen
関連事項:
  • フィールドの詳細

    • IGNORE_CLASSFORMAT_PROPERTY_NAME

      public static final StringSE IGNORE_CLASSFORMAT_PROPERTY_NAME
      特にサポートされていないクラスファイルバージョンの場合、クラスパスのスキャン中にクラス形式の例外を無視するように Spring に指示するシステムプロパティ。デフォルトでは、このようなクラス形式の不一致により、クラスパスのスキャンが失敗します。
      導入:
      6.1.2
      関連事項:
    • logger

      protected final Log logger
  • コンストラクターの詳細

    • ClassPathScanningCandidateComponentProvider

      protected ClassPathScanningCandidateComponentProvider()
      柔軟なサブクラス初期化のための protected コンストラクター。
      導入:
      4.3.6
    • ClassPathScanningCandidateComponentProvider

      public ClassPathScanningCandidateComponentProvider(boolean useDefaultFilters)
      StandardEnvironment を使用して ClassPathScanningCandidateComponentProvider を作成します。
      パラメーター:
      useDefaultFilters - @Component@Repository@Service@Controller ステレオタイプアノテーションのデフォルトフィルターを登録するかどうか
      関連事項:
    • ClassPathScanningCandidateComponentProvider

      public ClassPathScanningCandidateComponentProvider(boolean useDefaultFilters, Environment environment)
      指定された Environment で ClassPathScanningCandidateComponentProvider を作成します。
      パラメーター:
      useDefaultFilters - @Component@Repository@Service@Controller ステレオタイプアノテーションのデフォルトフィルターを登録するかどうか
      environment - 使用する環境
      関連事項:
  • メソッドの詳細

    • setResourcePattern

      public void setResourcePattern(StringSE resourcePattern)
      クラスパスをスキャンするときに使用するリソースパターンを設定します。この値は、各基本パッケージ名に追加されます。
      関連事項:
    • addIncludeFilter

      public void addIncludeFilter(TypeFilter includeFilter)
      包含型フィルターを包含リストの最後に追加します。
    • addExcludeFilter

      public void addExcludeFilter(TypeFilter excludeFilter)
      除外型フィルターを除外リストのに追加します。
    • resetFilters

      public void resetFilters(boolean useDefaultFilters)
      構成済みの型フィルターをリセットします。
      パラメーター:
      useDefaultFilters - @Component@Repository@Service@Controller ステレオタイプアノテーションのデフォルトフィルターを再登録するかどうか
      関連事項:
    • registerDefaultFilters

      protected void registerDefaultFilters()
      @Component のデフォルトのフィルターを登録します。

      これにより、@Repository@Service@Controller ステレオタイプアノテーションを含む、@Component メタアノテーションを持つすべてのアノテーションが暗黙的に登録されます。

      利用可能な場合は、Jakarta EE の ManagedBeanEE および JSR-330 の NamedEE アノテーション (および Jakarta 以前の javax.annotation.ManagedBean および javax.inject.Named の同等のアノテーション) もサポートします。

    • setEnvironment

      public void setEnvironment(Environment environment)
      プレースホルダーを解決し、@Conditional アノテーション付きコンポーネントクラスを評価するときに使用する環境を設定します。

      デフォルトは StandardEnvironment です。

      パラメーター:
      environment - 使用する環境
    • getEnvironment

      public final Environment getEnvironment()
      インターフェースからコピーされた説明: EnvironmentCapable
      このコンポーネントに関連付けられている Environment を返します。
      次で指定:
      インターフェース EnvironmentCapablegetEnvironment 
    • getRegistry

      @Nullable protected BeanDefinitionRegistry getRegistry()
      このスキャナーで使用されている BeanDefinitionRegistry があれば、それを返します。
    • setResourceLoader

      public void setResourceLoader(@Nullable ResourceLoader resourceLoader)
      リソースの場所に使用する ResourceLoader を設定します。これは通常、ResourcePatternResolver 実装です。

      デフォルトは PathMatchingResourcePatternResolver で、ResourcePatternResolver インターフェースを介してリソースパターンを解決することもできます。

      次で指定:
      インターフェース ResourceLoaderAwaresetResourceLoader 
      パラメーター:
      resourceLoader - このオブジェクトによって使用される ResourceLoader オブジェクト
      関連事項:
    • getResourceLoader

      public final ResourceLoader getResourceLoader()
      このコンポーネントプロバイダーが使用する ResourceLoader を返します。
    • setMetadataReaderFactory

      public void setMetadataReaderFactory(MetadataReaderFactory metadataReaderFactory)
      使用する MetadataReaderFactory を設定します。

      デフォルトは、指定されたリソースローダーCachingMetadataReaderFactory です。

      setResourceLoader(org.springframework.core.io.ResourceLoader)後にこの setter メソッドを呼び出して、指定された MetadataReaderFactory がデフォルトファクトリをオーバーライドするようにします。

    • getMetadataReaderFactory

      public final MetadataReaderFactory getMetadataReaderFactory()
      このコンポーネントプロバイダが使用する MetadataReaderFactory を返します。
    • findCandidateComponents

      public SetSE<BeanDefinition> findCandidateComponents(StringSE basePackage)
      コンポーネントインデックスまたはクラスパスをスキャンして、候補コンポーネントを探します。
      パラメーター:
      basePackage - アノテーション付きクラスをチェックするパッケージ
      戻り値:
      自動検出された Bean 定義の対応するセット
    • resolveBasePackage

      protected StringSE resolveBasePackage(StringSE basePackage)
      指定された基本パッケージをパッケージ検索パスのパターン仕様に解決します。

      デフォルトの実装は、システムプロパティに対してプレースホルダーを解決し、"." -based パッケージパスを「/"-based リソースパス」に変換します。

      パラメーター:
      basePackage - ユーザーが指定した基本パッケージ
      戻り値:
      パッケージ検索に使用されるパターン仕様
    • isCandidateComponent

      protected boolean isCandidateComponent(MetadataReader metadataReader) throws IOExceptionSE
      指定されたクラスがどの除外フィルターにも一致せず、少なくとも 1 つの包含フィルターに一致するかどうかを判別します。
      パラメーター:
      metadataReader - クラスの ASM ClassReader
      戻り値:
      クラスが候補コンポーネントとして適格かどうか
      例外:
      IOExceptionSE
    • isCandidateComponent

      protected boolean isCandidateComponent(AnnotatedBeanDefinition beanDefinition)
      指定された Bean 定義が候補として適格かどうかを判別します。

      デフォルトの実装では、クラスがインターフェースではなく、外側のクラスに依存していないかどうかをチェックします。

      サブクラスでオーバーライドできます。

      パラメーター:
      beanDefinition - チェックする Bean 定義
      戻り値:
      Bean 定義が候補コンポーネントとして適格かどうか
    • clearCache

      public void clearCache()
      ローカルメタデータキャッシュがあればクリアし、キャッシュされたクラスメタデータをすべて削除します。