クラス ClassPathBeanDefinitionScanner

java.lang.ObjectSE
org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider
org.springframework.context.annotation.ClassPathBeanDefinitionScanner
実装されたすべてのインターフェース:
AwareResourceLoaderAwareEnvironmentCapable

public class ClassPathBeanDefinitionScanner extends ClassPathScanningCandidateComponentProvider
クラスパス上の Bean 候補を検出し、対応する Bean 定義を特定のレジストリ(BeanFactory または ApplicationContext)に登録する Bean 定義スキャナー。

候補クラスは、構成可能な型フィルターを通じて検出されます。デフォルトのフィルターには、Spring の @Component@Repository@Service@Controller ステレオタイプでアノテーションが付けられたクラスが含まれています。

可能な場合は、Jakarta EE の ManagedBeanEE および JSR-330 の NamedEE アノテーションもサポートします。

導入:
2.5
作成者:
Mark Fisher, Juergen Hoeller, Chris Beams
関連事項:
  • コンストラクターの詳細

    • ClassPathBeanDefinitionScanner

      public ClassPathBeanDefinitionScanner(BeanDefinitionRegistry registry)
      指定された Bean ファクトリの新しい ClassPathBeanDefinitionScanner を作成します。
      パラメーター:
      registry - Bean 定義を BeanDefinitionRegistry の形式でロードする BeanFactory 
    • ClassPathBeanDefinitionScanner

      public ClassPathBeanDefinitionScanner(BeanDefinitionRegistry registry, boolean useDefaultFilters)
      指定された Bean ファクトリの新しい ClassPathBeanDefinitionScanner を作成します。

      渡された Bean ファクトリが BeanDefinitionRegistry インターフェースだけでなく ResourceLoader インターフェースも実装している場合は、デフォルトの ResourceLoader としても使用されます。これは通常、ApplicationContext 実装の場合です。

      プレーンな BeanDefinitionRegistry を指定した場合、デフォルトの ResourceLoader は PathMatchingResourcePatternResolver になります。

      渡された Bean ファクトリが EnvironmentCapable も実装する場合、その環境はこのリーダーによって使用されます。それ以外の場合、リーダーは StandardEnvironment を初期化して使用します。すべての ApplicationContext 実装は EnvironmentCapable ですが、通常の BeanFactory 実装はそうではありません。

      パラメーター:
      registry - Bean 定義を BeanDefinitionRegistry の形式でロードする BeanFactory 
      useDefaultFilters - @Component@Repository@Service@Controller ステレオタイプアノテーションのデフォルトフィルターを含めるかどうか
      関連事項:
    • ClassPathBeanDefinitionScanner

      public ClassPathBeanDefinitionScanner(BeanDefinitionRegistry registry, boolean useDefaultFilters, Environment environment)
      指定された Bean ファクトリの新しい ClassPathBeanDefinitionScanner を作成し、Bean 定義プロファイルメタデータを評価するときに指定された Environment を使用します。

      渡された Bean ファクトリが  BeanDefinitionRegistry インターフェースを実装するだけでなく、ResourceLoader インターフェースも実装する場合、デフォルトの ResourceLoader としても使用されます。これは通常、ApplicationContext 実装の場合です。

      プレーンな BeanDefinitionRegistry を指定した場合、デフォルトの ResourceLoader は PathMatchingResourcePatternResolver になります。

      パラメーター:
      registry - Bean 定義を BeanDefinitionRegistry の形式でロードする BeanFactory 
      useDefaultFilters - @Component@Repository@Service@Controller ステレオタイプアノテーションのデフォルトフィルターを含めるかどうか
      environment - Bean 定義プロファイルのメタデータを評価するときに使用する Spring Environment
      導入:
      3.1
      関連事項:
    • ClassPathBeanDefinitionScanner

      public ClassPathBeanDefinitionScanner(BeanDefinitionRegistry registry, boolean useDefaultFilters, Environment environment, @Nullable ResourceLoader resourceLoader)
      指定された Bean ファクトリの新しい ClassPathBeanDefinitionScanner を作成し、Bean 定義プロファイルメタデータを評価するときに指定された Environment を使用します。
      パラメーター:
      registry - Bean 定義を BeanDefinitionRegistry の形式でロードする BeanFactory 
      useDefaultFilters - @Component@Repository@Service@Controller ステレオタイプアノテーションのデフォルトフィルターを含めるかどうか
      environment - Bean 定義プロファイルのメタデータを評価するときに使用する Spring Environment
      resourceLoader - 使用する ResourceLoader
      導入:
      4.3.6
  • メソッドの詳細

    • getRegistry

      public final BeanDefinitionRegistry getRegistry()
      このスキャナーが動作する BeanDefinitionRegistry を返します。
      オーバーライド:
      クラス ClassPathScanningCandidateComponentProvidergetRegistry 
    • setBeanDefinitionDefaults

      public void setBeanDefinitionDefaults(@Nullable BeanDefinitionDefaults beanDefinitionDefaults)
      検出された Bean に使用するデフォルトを設定します。
      関連事項:
    • getBeanDefinitionDefaults

      public BeanDefinitionDefaults getBeanDefinitionDefaults()
      検出された Bean に使用するデフォルトを返します(決して null ではありません)。
      導入:
      4.1
    • setAutowireCandidatePatterns

      public void setAutowireCandidatePatterns(@Nullable StringSE... autowireCandidatePatterns)
      オートワイヤー候補を決定するための名前一致パターンを設定します。
      パラメーター:
      autowireCandidatePatterns - 照合するパターン
    • setBeanNameGenerator

      public void setBeanNameGenerator(@Nullable BeanNameGenerator beanNameGenerator)
      検出された Bean クラスに使用する BeanNameGenerator を設定します。

      デフォルトは AnnotationBeanNameGenerator です。

    • setScopeMetadataResolver

      public void setScopeMetadataResolver(@Nullable ScopeMetadataResolver scopeMetadataResolver)
      検出された Bean クラスに使用する ScopeMetadataResolver を設定します。これにより、カスタムの "scopedProxyMode" 設定が上書きされることに注意してください。

      デフォルトは AnnotationScopeMetadataResolver です。

      関連事項:
    • setScopedProxyMode

      public void setScopedProxyMode(ScopedProxyMode scopedProxyMode)
      非シングルトンスコープ Bean のプロキシ動作を指定します。これにより、カスタムの "scopeMetadataResolver" 設定が上書きされることに注意してください。

      デフォルトは ScopedProxyMode.NO です。

      関連事項:
    • setIncludeAnnotationConfig

      public void setIncludeAnnotationConfig(boolean includeAnnotationConfig)
      アノテーション設定ポストプロセッサーを登録するかどうかを指定します。

      デフォルトでは、ポストプロセッサーを登録します。アノテーションを無視したり、別の方法で処理したりするには、これをオフにします。

    • scan

      public int scan(StringSE... basePackages)
      指定された基本パッケージ内でスキャンを実行します。
      パラメーター:
      basePackages - アノテーション付きクラスを確認するパッケージ
      戻り値:
      登録された Bean の数
    • doScan

      protected SetSE<BeanDefinitionHolder> doScan(StringSE... basePackages)
      指定された基本パッケージ内でスキャンを実行し、登録された Bean 定義を返します。

      このメソッドはアノテーション設定プロセッサーを登録しませが、呼び出し側に任せます。

      パラメーター:
      basePackages - アノテーション付きクラスを確認するパッケージ
      戻り値:
      ツール登録目的で登録されている Bean のセット(存在する場合) (非 null)
    • postProcessBeanDefinition

      protected void postProcessBeanDefinition(AbstractBeanDefinition beanDefinition, StringSE beanName)
      コンポーネントクラスのスキャンから取得したコンテンツ以外に、指定した Bean 定義にさらに設定を適用します。
      パラメーター:
      beanDefinition - スキャンされた Bean 定義
      beanName - 指定された Bean の生成された Bean 名
    • registerBeanDefinition

      protected void registerBeanDefinition(BeanDefinitionHolder definitionHolder, BeanDefinitionRegistry registry)
      指定された Bean を指定されたレジストリに登録します。

      サブクラスでオーバーライドできます。登録プロセスを適合させるか、スキャンされた各 Bean の Bean 定義をさらに登録します。

      パラメーター:
      definitionHolder - Bean 定義と Bean の Bean 名
      registry - Bean を登録する BeanDefinitionRegistry
    • checkCandidate

      protected boolean checkCandidate(StringSE beanName, BeanDefinition beanDefinition) throws IllegalStateExceptionSE
      指定された候補の Bean 名を確認して、対応する Bean 定義を登録する必要があるか、既存の定義と競合するかを判別してください。
      パラメーター:
      beanName - Bean の推奨名
      beanDefinition - 対応する Bean 定義
      戻り値:
      Bean をそのまま登録できる場合は true。指定された名前に互換性のある既存の Bean 定義が存在するためにスキップする必要がある場合は false 
      例外:
      IllegalStateExceptionSE - 指定された名前に対して、互換性のない既存の Bean 定義が見つかった場合
    • isCompatible

      protected boolean isCompatible(BeanDefinition newDef, BeanDefinition existingDef)
      指定された新しい Bean 定義が、指定された既存の Bean 定義と互換性があるかどうかを判断します。

      デフォルトの実装は、既存の Bean 定義が同じソースまたは非スキャンソースからのものである場合、互換性があると見なします。

      パラメーター:
      newDef - スキャンから作成された新しい Bean 定義
      existingDef - 既存の Bean 定義、潜在的に明示的に定義された定義、スキャンから以前に生成された定義
      戻り値:
      定義が互換性があると見なされるかどうか、既存の定義を優先して新しい定義をスキップするかどうか