クラス AbstractAutowireCapableBeanFactory

実装されたすべてのインターフェース:
BeanFactoryAutowireCapableBeanFactoryConfigurableBeanFactorySingletonBeanRegistryHierarchicalBeanFactoryAliasRegistry
既知の直属サブクラス
DefaultListableBeanFactory

public abstract class AbstractAutowireCapableBeanFactory extends AbstractBeanFactory implements AutowireCapableBeanFactory
RootBeanDefinition クラスで指定されたすべての機能を備えた、デフォルトの Bean 作成を実装する抽象 Bean ファクトリスーパークラス。AbstractBeanFactory の createBean(java.lang.Class<T>) メソッドに加えて、AutowireCapableBeanFactory インターフェースを実装します。

Bean の作成(コンストラクター解決を使用)、プロパティの設定、接続(オートワイヤーを含む)、初期化を提供します。ランタイム Bean 参照の処理、管理コレクションの解決、初期化メソッドの呼び出しなど。オートワイヤーコンストラクター、名前によるプロパティ、型によるプロパティをサポートします。

サブクラスによって実装される主なテンプレートメソッドは、オートワイヤーに使用される AutowireCapableBeanFactory.resolveDependency(DependencyDescriptor, String, Set, TypeConverter) です。Bean 定義を検索できる ListableBeanFactory の場合、通常、一致する Bean はそのような検索を通じて実装されます。それ以外の場合は、簡略化されたマッチングを実装できます。

このクラスは、Bean 定義レジストリ機能を想定または実装しないことに注意してください。ListableBeanFactory および BeanDefinitionRegistry インターフェースの実装については、それぞれ DefaultListableBeanFactory を参照してください。これらは、それぞれそのようなファクトリの API および SPI ビューを表します。

導入:
13.02.2004
作成者:
Rod Johnson, Juergen Hoeller, Rob Harrop, Mark Fisher, Costin Leau, Chris Beams, Sam Brannen, Phillip Webb
関連事項:
  • コンストラクターの詳細

    • AbstractAutowireCapableBeanFactory

      public AbstractAutowireCapableBeanFactory()
      新しい AbstractAutowireCapableBeanFactory を作成します。
    • AbstractAutowireCapableBeanFactory

      public AbstractAutowireCapableBeanFactory(@Nullable BeanFactory parentBeanFactory)
      指定された親を持つ新しい AbstractAutowireCapableBeanFactory を作成します。
      パラメーター:
      parentBeanFactory - 親 Bean ファクトリ、または存在しない場合は null 
  • メソッドの詳細

    • setInstantiationStrategy

      public void setInstantiationStrategy(InstantiationStrategy instantiationStrategy)
      Bean インスタンスの作成に使用するインスタンス化戦略を設定します。デフォルトは CglibSubclassingInstantiationStrategy です。
      関連事項:
    • getInstantiationStrategy

      public InstantiationStrategy getInstantiationStrategy()
      Bean インスタンスの作成に使用するインスタンス化戦略を返します。
    • setParameterNameDiscoverer

      public void setParameterNameDiscoverer(@Nullable ParameterNameDiscoverer parameterNameDiscoverer)
      必要に応じて、メソッドパラメーター名の解決に使用する ParameterNameDiscoverer を設定します(コンストラクター名など)。

      デフォルトは DefaultParameterNameDiscoverer です。

    • getParameterNameDiscoverer

      @Nullable public ParameterNameDiscoverer getParameterNameDiscoverer()
      必要に応じて、メソッドパラメーター名の解決に使用する ParameterNameDiscoverer を返します。
    • setAllowCircularReferences

      public void setAllowCircularReferences(boolean allowCircularReferences)
      Bean 間の循環参照を許可するかどうかを設定し、自動的に解決しようとします。

      循環参照解決は、関係する Bean の 1 つが、まだ完全に初期化されていない別の Bean への参照を受け取ることに注意してください。これにより、初期化に微妙な副作用が生じる可能性があります。ただし、多くのシナリオでうまく機能します。

      デフォルトは "true" です。これをオフにすると、循環参照が発生したときに例外がスローされ、完全に許可されなくなります。

      注意 : Bean 間の循環参照に依存しないことをお勧めします。アプリケーションロジックをリファクタリングして、関連する 2 つの Bean を、それらの共通ロジックをカプセル化する 3 番目の Bean に委譲します。

    • isAllowCircularReferences

      public boolean isAllowCircularReferences()
      Bean 間の循環参照を許可するかどうかを返します。
      導入:
      5.3.10
      関連事項:
    • setAllowRawInjectionDespiteWrapping

      public void setAllowRawInjectionDespiteWrapping(boolean allowRawInjectionDespiteWrapping)
      注入された Bean が最終的にラップされる場合(たとえば、AOP 自動プロキシ経由)にも関わらず、他の Bean のプロパティへの Bean インスタンスの生の注入を許可するかどうかを設定します。

      これは、他の方法では解決できない循環参照の場合の最後の手段としてのみ使用されます。基本的に、Bean 接続プロセス全体の障害よりも生のインスタンスを挿入することを優先します。

      Spring 2.0 では、デフォルトは "false" です。これをオンにすると、ラップされていない生の Bean が一部の参照に挿入されます。これは、Spring 1.2 の(おそらくクリーンではない)デフォルトの動作でした。

      注意 : 一般に、特に自動プロキシを使用する場合は、Bean 間の循環参照に依存しないことをお勧めします。

      関連事項:
    • isAllowRawInjectionDespiteWrapping

      public boolean isAllowRawInjectionDespiteWrapping()
      Bean インスタンスの raw インジェクションを許可するかどうかを返します。
      導入:
      5.3.10
      関連事項:
    • ignoreDependencyType

      public void ignoreDependencyType(ClassSE<?> type)
      オートワイヤーの指定された依存関係型(たとえば、String)を無視します。デフォルトはなしです。
    • ignoreDependencyInterface

      public void ignoreDependencyInterface(ClassSE<?> ifc)
      オートワイヤーの指定された依存関係インターフェースを無視します。

      通常、これは、BeanFactory から BeanFactoryAware または ApplicationContext から ApplicationContextAware など、他の方法で解決される依存関係を登録するために、アプリケーションコンテキストによって使用されます。

      デフォルトでは、BeanFactoryAware インターフェースのみが無視されます。さらに無視する型については、型ごとにこのメソッドを呼び出します。

      関連事項:
    • copyConfigurationFrom

      public void copyConfigurationFrom(ConfigurableBeanFactory otherFactory)
      インターフェースからコピーされた説明: ConfigurableBeanFactory
      指定された他のファクトリから関連するすべての構成をコピーします。

      BeanPostProcessors、スコープ、ファクトリ固有の内部設定だけでなく、すべての標準構成設定を含める必要があります。BeanDefinition オブジェクトや Bean 名のエイリアスなど、実際の Bean 定義のメタデータを含めないでください。

      次で指定:
      インターフェース ConfigurableBeanFactorycopyConfigurationFrom 
      オーバーライド:
      クラス AbstractBeanFactorycopyConfigurationFrom 
      パラメーター:
      otherFactory - コピー元のもう 1 つの BeanFactory
    • createBean

      public <T> T createBean(ClassSE<T> beanClass) throws BeansException
      インターフェースからコピーされた説明: AutowireCapableBeanFactory
      指定されたクラスの新しい Bean インスタンスを完全に作成します。

      適用可能なすべての BeanPostProcessors を含む、Bean の完全な初期化を実行します。

      メモ: これは、新しいインスタンスを作成し、アノテーション付きのフィールドとメソッドを設定し、すべての標準 Bean 初期化コールバックを適用することを目的としています。コンストラクターの解決は、Kotlin プライマリ / 単一のパブリック / 単一の非パブリックに基づいており、あいまいなシナリオではデフォルトのコンストラクターにフォールバックし、SmartInstantiationAwareBeanPostProcessor.determineCandidateConstructors(java.lang.Class<?>, java.lang.String) の影響も受けます (例: アノテーション駆動型のコンストラクターの選択)。

      次で指定:
      インターフェース AutowireCapableBeanFactorycreateBean 
      パラメーター:
      beanClass - 作成する Bean のクラス
      戻り値:
      新しい Bean インスタンス
      例外:
      BeansException - インスタンス化または接続が失敗した場合
    • autowireBean

      public void autowireBean(ObjectSE existingBean)
      インターフェースからコピーされた説明: AutowireCapableBeanFactory
      インスタンス化後のコールバックと Bean プロパティの後処理を適用することにより、指定された Bean インスタンスを生成します(例: アノテーション駆動型インジェクション用)。

      メモ: これは基本的に、新しいインスタンスまたは非直列化されたインスタンスのいずれかのために、アノテーション付きのフィールドとメソッドを(再)入力することを目的としています。これは 従来の名前によるプロパティや型によるプロパティのオートワイヤーを意味するものではありませ。これらの目的には AutowireCapableBeanFactory.autowireBeanProperties(java.lang.Object, int, boolean) を使用してください。

      次で指定:
      インターフェース AutowireCapableBeanFactoryautowireBean 
      パラメーター:
      existingBean - 既存の Bean インスタンス
    • configureBean

      public ObjectSE configureBean(ObjectSE existingBean, StringSE beanName) throws BeansException
      インターフェースからコピーされた説明: AutowireCapableBeanFactory
      指定された生の Bean を構成します: Bean プロパティのオートワイヤー、Bean プロパティ値の適用、setBeanName や setBeanFactory などのファクトリコールバックの適用、およびすべての Bean ポストプロセッサー(特定の生の Bean をラップするものを含む)も適用します。

      これは実質的に AutowireCapableBeanFactory.initializeBean(java.lang.Object, java.lang.String) が提供するもののスーパーセットであり、対応する Bean 定義で指定された構成を完全に適用します。 注: このメソッドには、指定された名前の Bean 定義が必要です!

      次で指定:
      インターフェース AutowireCapableBeanFactoryconfigureBean 
      パラメーター:
      existingBean - 既存の Bean インスタンス
      beanName - Bean の名前、必要に応じて渡される (その名前の Bean 定義が利用可能でなければなりません)
      戻り値:
      使用する Bean インスタンス、元のインスタンスまたはラップされたインスタンス
      例外:
      NoSuchBeanDefinitionException - 指定された名前の Bean 定義がない場合
      BeansException - 初期化が失敗した場合
      関連事項:
    • createBean

      @DeprecatedSE public ObjectSE createBean(ClassSE<?> beanClass, int autowireMode, boolean dependencyCheck) throws BeansException
      使用すべきではありません。
      インターフェースからコピーされた説明: AutowireCapableBeanFactory
      指定されたオートワイヤー戦略を使用して、指定されたクラスの新しい Bean インスタンスを完全に作成します。このインターフェースで定義されているすべての定数は、ここでサポートされています。

      適用可能なすべての BeanPostProcessors を含む、Bean の完全な初期化を実行します。これは事実上、AutowireCapableBeanFactory.autowire(java.lang.Class<?>, int, boolean) が提供するもののスーパーセットであり、AutowireCapableBeanFactory.initializeBean(java.lang.Object, java.lang.String) の動作を追加します。

      次で指定:
      インターフェース AutowireCapableBeanFactorycreateBean 
      パラメーター:
      beanClass - 作成する Bean のクラス
      autowireMode - このインターフェースの定数を使用して、名前または型
      dependencyCheck - オブジェクトの依存性チェックを実行するかどうか (コンストラクターのオートワイヤーには適用されないため、そこで無視されます)
      戻り値:
      新しい Bean インスタンス
      例外:
      BeansException - インスタンス化または接続が失敗した場合
      関連事項:
    • autowire

      public ObjectSE autowire(ClassSE<?> beanClass, int autowireMode, boolean dependencyCheck) throws BeansException
      インターフェースからコピーされた説明: AutowireCapableBeanFactory
      指定された autowire 戦略を使用して、指定されたクラスの新しい Bean インスタンスをインスタンス化します。このインターフェースで定義されているすべての定数はここでサポートされています。インスタンス化前のコールバックだけを適用するために、AUTOWIRE_NO で呼び出すこともできます(たとえば、アノテーション駆動型の注入)。

      標準の BeanPostProcessors コールバックを適用せ、Bean のさらなる初期化を実行しません。このインターフェースは、これらの目的のために、たとえば AutowireCapableBeanFactory.initializeBean(java.lang.Object, java.lang.String) のような、きめ細かい操作を提供します。ただし、インスタンスの構築に適用可能な場合は、InstantiationAwareBeanPostProcessor コールバックが適用されます。

      次で指定:
      インターフェース AutowireCapableBeanFactoryautowire 
      パラメーター:
      beanClass - インスタンス化する Bean のクラス
      autowireMode - このインターフェースの定数を使用して、名前または型
      dependencyCheck - Bean インスタンス内のオブジェクト参照の依存性チェックを実行するかどうか (コンストラクターのオートワイヤーには適用されないため、そこで無視されます)
      戻り値:
      新しい Bean インスタンス
      例外:
      BeansException - インスタンス化または接続が失敗した場合
      関連事項:
    • autowireBeanProperties

      public void autowireBeanProperties(ObjectSE existingBean, int autowireMode, boolean dependencyCheck) throws BeansException
      インターフェースからコピーされた説明: AutowireCapableBeanFactory
      指定された Bean インスタンスの Bean プロパティを名前または型でオートワイヤーします。インスタンス化後のコールバックを適用するためだけに AUTOWIRE_NO で呼び出すこともできます(例: アノテーション駆動型の注入)。

      標準の BeanPostProcessors コールバックを適用せ、Bean のさらなる初期化を実行しません。このインターフェースは、これらの目的のために、たとえば AutowireCapableBeanFactory.initializeBean(java.lang.Object, java.lang.String) のような、きめ細かい操作を提供します。ただし、インスタンスの構成に該当する場合は、InstantiationAwareBeanPostProcessor コールバックが適用されます。

      次で指定:
      インターフェース AutowireCapableBeanFactoryautowireBeanProperties 
      パラメーター:
      existingBean - 既存の Bean インスタンス
      autowireMode - このインターフェースの定数を使用して、名前または型
      dependencyCheck - Bean インスタンス内のオブジェクト参照の依存性チェックを実行するかどうか
      例外:
      BeansException - 接続に失敗した場合
      関連事項:
    • applyBeanPropertyValues

      public void applyBeanPropertyValues(ObjectSE existingBean, StringSE beanName) throws BeansException
      インターフェースからコピーされた説明: AutowireCapableBeanFactory
      指定された名前の Bean 定義のプロパティ値を、指定された Bean インスタンスに適用します。Bean 定義は、完全に自己完結型の Bean を定義して、そのプロパティ値を再利用するか、既存の Bean インスタンスに使用することを意図したプロパティ値のみを定義できます。

      このメソッドは Bean プロパティをオートワイヤーしませ。明示的に定義されたプロパティ値を適用するだけです。AutowireCapableBeanFactory.autowireBeanProperties(java.lang.Object, int, boolean) メソッドを使用して、既存の Bean インスタンスをオートワイヤーします。 注: このメソッドには、指定された名前の Bean 定義が必要です!

      標準の BeanPostProcessors コールバックを適用せ、Bean のさらなる初期化を実行しません。このインターフェースは、これらの目的のために、たとえば AutowireCapableBeanFactory.initializeBean(java.lang.Object, java.lang.String) のような、きめ細かい操作を提供します。ただし、インスタンスの構成に該当する場合は、InstantiationAwareBeanPostProcessor コールバックが適用されます。

      次で指定:
      インターフェース AutowireCapableBeanFactoryapplyBeanPropertyValues 
      パラメーター:
      existingBean - 既存の Bean インスタンス
      beanName - Bean ファクトリ内の Bean 定義の名前 (その名前の Bean 定義が利用可能でなければなりません)
      例外:
      NoSuchBeanDefinitionException - 指定された名前の Bean 定義がない場合
      BeansException - プロパティ値の適用に失敗した場合
      関連事項:
    • initializeBean

      public ObjectSE initializeBean(ObjectSE existingBean, StringSE beanName)
      インターフェースからコピーされた説明: AutowireCapableBeanFactory
      setBeanName や setBeanFactory などのファクトリコールバックを適用し、すべての Bean ポストプロセッサー(指定された raw Bean をラップするものを含む)も適用して、指定された raw Bean を初期化します。

      指定された名前の Bean 定義が Bean ファクトリに存在する必要はないことに注意してください。渡された Bean 名は単にコールバックに使用されますが、登録された Bean 定義に対してはチェックされません。

      次で指定:
      インターフェース AutowireCapableBeanFactoryinitializeBean 
      パラメーター:
      existingBean - 既存の Bean インスタンス
      beanName - Bean の名前、必要に応じて渡される (BeanPostProcessors にのみ渡されます。指定されたインスタンスを強制的に返すために AutowireCapableBeanFactory.ORIGINAL_INSTANCE_SUFFIX 規則に従うことができます。つまり、プロキシなどはありません。)
      戻り値:
      使用する Bean インスタンス、元のインスタンスまたはラップされたインスタンス
      関連事項:
    • applyBeanPostProcessorsBeforeInitialization

      @DeprecatedSE(since="6.1") public ObjectSE applyBeanPostProcessorsBeforeInitialization(ObjectSE existingBean, StringSE beanName) throws BeansException
      使用すべきではありません。
      インターフェースからコピーされた説明: AutowireCapableBeanFactory
      指定された既存の Bean インスタンスに BeanPostProcessors を適用し、postProcessBeforeInitialization メソッドを呼び出します。返された Bean インスタンスは、元のラッパーの可能性があります。
      次で指定:
      インターフェース AutowireCapableBeanFactoryapplyBeanPostProcessorsBeforeInitialization 
      パラメーター:
      existingBean - 既存の Bean インスタンス
      beanName - Bean の名前、必要に応じて渡される (BeanPostProcessors にのみ渡されます。指定されたインスタンスを強制的に返すために AutowireCapableBeanFactory.ORIGINAL_INSTANCE_SUFFIX 規則に従うことができます。つまり、プロキシなどはありません。)
      戻り値:
      使用する Bean インスタンス、元のインスタンスまたはラップされたインスタンス
      例外:
      BeansException - 後処理が失敗した場合
      関連事項:
    • applyBeanPostProcessorsAfterInitialization

      @DeprecatedSE(since="6.1") public ObjectSE applyBeanPostProcessorsAfterInitialization(ObjectSE existingBean, StringSE beanName) throws BeansException
      使用すべきではありません。
      インターフェースからコピーされた説明: AutowireCapableBeanFactory
      指定された既存の Bean インスタンスに BeanPostProcessors を適用し、postProcessAfterInitialization メソッドを呼び出します。返された Bean インスタンスは、元のラッパーの可能性があります。
      次で指定:
      インターフェース AutowireCapableBeanFactoryapplyBeanPostProcessorsAfterInitialization 
      パラメーター:
      existingBean - 既存の Bean インスタンス
      beanName - Bean の名前、必要に応じて渡される (BeanPostProcessors にのみ渡されます。指定されたインスタンスを強制的に返すために AutowireCapableBeanFactory.ORIGINAL_INSTANCE_SUFFIX 規則に従うことができます。つまり、プロキシなどはありません。)
      戻り値:
      使用する Bean インスタンス、元のインスタンスまたはラップされたインスタンス
      例外:
      BeansException - 後処理が失敗した場合
      関連事項:
    • destroyBean

      public void destroyBean(ObjectSE existingBean)
      インターフェースからコピーされた説明: AutowireCapableBeanFactory
      指定された Bean インスタンス(通常 AutowireCapableBeanFactory.createBean(Class) から取得)を破棄し、DisposableBean 契約と登録済み DestructionAwareBeanPostProcessors を適用します。

      破棄中に発生した例外は、このメソッドの呼び出し元に伝播するのではなく、キャッチしてログに記録する必要があります。

      次で指定:
      インターフェース AutowireCapableBeanFactorydestroyBean 
      パラメーター:
      existingBean - 破棄する Bean インスタンス
    • resolveBeanByName

      public ObjectSE resolveBeanByName(StringSE name, DependencyDescriptor descriptor)
      インターフェースからコピーされた説明: AutowireCapableBeanFactory
      指定された Bean 名の Bean インスタンスを解決し、ターゲットファクトリメソッドに公開するための依存関係記述子を提供します。

      これは事実上、InjectionPoint 引数を持つファクトリメソッドをサポートする BeanFactory.getBean(String, Class) のバリアントです。

      次で指定:
      インターフェース AutowireCapableBeanFactoryresolveBeanByName 
      パラメーター:
      name - 検索する Bean の名前
      descriptor - リクエストしているインジェクションポイントの依存性記述子
      戻り値:
      対応する Bean インスタンス
      関連事項:
    • resolveDependency

      @Nullable public ObjectSE resolveDependency(DependencyDescriptor descriptor, @Nullable StringSE requestingBeanName) throws BeansException
      インターフェースからコピーされた説明: AutowireCapableBeanFactory
      このファクトリで定義された Bean に対する指定された依存関係を解決します。
      次で指定:
      インターフェース AutowireCapableBeanFactoryresolveDependency 
      パラメーター:
      descriptor - 依存関係の記述子 (フィールド / メソッド / コンストラクター)
      requestingBeanName - 指定された依存関係を宣言する Bean の名前
      戻り値:
      解決されたオブジェクト。見つからない場合は null 
      例外:
      NoSuchBeanDefinitionException - 一致する Bean が見つからなかった場合
      NoUniqueBeanDefinitionException - 一致する Bean が複数見つかった場合
      BeansException - 他の理由で依存関係の解決に失敗した場合
      関連事項:
    • createBean

      protected ObjectSE createBean(StringSE beanName, RootBeanDefinition mbd, @Nullable ObjectSE[] args) throws BeanCreationException
      このクラスの中心的な方法: Bean インスタンスを作成し、Bean インスタンスに入力し、ポストプロセッサーを適用するなど。
      次で指定:
      クラス AbstractBeanFactorycreateBean 
      パラメーター:
      beanName - Bean の名前
      mbd - Bean のマージされた Bean 定義
      args - コンストラクターまたはファクトリメソッドの呼び出しに使用する明示的な引数
      戻り値:
      Bean の新しいインスタンス
      例外:
      BeanCreationException - Bean を作成できなかった場合
      関連事項:
    • doCreateBean

      protected ObjectSE doCreateBean(StringSE beanName, RootBeanDefinition mbd, @Nullable ObjectSE[] args) throws BeanCreationException
      指定された Bean を実際に作成します。この時点で、作成前の処理がすでに行われています。postProcessBeforeInstantiation コールバックをチェックします。

      デフォルトの Bean インスタンス化、ファクトリメソッドの使用、コンストラクターのオートワイヤーを区別します。

      パラメーター:
      beanName - Bean の名前
      mbd - Bean のマージされた Bean 定義
      args - コンストラクターまたはファクトリメソッドの呼び出しに使用する明示的な引数
      戻り値:
      Bean の新しいインスタンス
      例外:
      BeanCreationException - Bean を作成できなかった場合
      関連事項:
    • predictBeanType

      @Nullable protected ClassSE<?> predictBeanType(StringSE beanName, RootBeanDefinition mbd, ClassSE<?>... typesToMatch)
      クラスからコピーされた説明: AbstractBeanFactory
      指定された Bean の(処理された Bean インスタンスの)最終的な Bean 型を予測します。AbstractBeanFactory.getType(java.lang.String) および AbstractBeanFactory.isTypeMatch(java.lang.String, org.springframework.core.ResolvableType) によって呼び出されます。FactoryBeans は未加工の Bean 型でのみ動作することになっているため、特に FactoryBeans を処理する必要はありません。

      この実装は、ファクトリメソッドと InstantiationAwareBeanPostProcessors を処理できないという点で単純化されています。標準 Bean の場合、Bean 型のみを正しく予測します。サブクラスでオーバーライドされ、より高度な型検出を適用します。

      オーバーライド:
      クラス AbstractBeanFactorypredictBeanType 
      パラメーター:
      beanName - Bean の名前
      mbd - 型を決定するマージされた Bean 定義
      typesToMatch - 内部型マッチングの目的の場合に一致する型 (また、返された Class がアプリケーションコードに公開されないことを通知します)
      戻り値:
      Bean の型、または予測できない場合は null 
    • determineTargetType

      @Nullable protected ClassSE<?> determineTargetType(StringSE beanName, RootBeanDefinition mbd, ClassSE<?>... typesToMatch)
      指定された Bean 定義のターゲット型を決定します。
      パラメーター:
      beanName - Bean の名前 (エラー処理のため)
      mbd - Bean のマージされた Bean 定義
      typesToMatch - 内部型マッチングの目的の場合に一致する型 (また、返された Class がアプリケーションコードに公開されないことを通知します)
      戻り値:
      判定可能な場合は Bean の型、そうでない場合は null 
    • getTypeForFactoryMethod

      @Nullable protected ClassSE<?> getTypeForFactoryMethod(StringSE beanName, RootBeanDefinition mbd, ClassSE<?>... typesToMatch)
      ファクトリメソッドに基づいて、指定された Bean 定義のターゲット型を決定します。ターゲット Bean に登録されているシングルトンインスタンスがない場合にのみ呼び出されます。

      この実装は、createBean(java.lang.Class<T>) のさまざまな作成戦略に一致する型を決定します。可能な限り、静的な型チェックを実行して、ターゲット Bean の作成を回避します。

      パラメーター:
      beanName - Bean の名前 (エラー処理のため)
      mbd - Bean のマージされた Bean 定義
      typesToMatch - 内部型マッチングの目的の場合に一致する型 (また、返された Class がアプリケーションコードに公開されないことを通知します)
      戻り値:
      判定可能な場合は Bean の型、そうでない場合は null 
      関連事項:
    • getTypeForFactoryBean

      protected ResolvableType getTypeForFactoryBean(StringSE beanName, RootBeanDefinition mbd, boolean allowInit)
      この実装は、オブジェクト型を判別するために、存在する場合は FactoryBean のジェネリクスパラメーターメタデータを照会しようとします。存在しない場合、つまり FactoryBean が raw 型として宣言されている場合は、Bean プロパティがまだ適用されていない FactoryBean のプレーンインスタンスで FactoryBean の getObjectType メソッドをチェックします。これがまだ型を返さず、allowInit が true である場合は、フォールバックとして FactoryBean の完全な作成が試行されます (スーパークラスの実装への委譲を通じて)。

      FactoryBean のショートカットチェックは、シングルトン FactoryBean の場合にのみ適用されます。FactoryBean インスタンス自体がシングルトンとして保持されていない場合、完全に作成されて、公開されたオブジェクトの型をチェックします。

      オーバーライド:
      クラス AbstractBeanFactorygetTypeForFactoryBean 
      パラメーター:
      beanName - Bean の名前
      mbd - Bean のマージされた Bean 定義
      allowInit - 型を別の方法で判別できない場合に FactoryBean の初期化が許可されている場合
      戻り値:
      決定可能な場合は Bean の型、それ以外の場合は ResolvableType.NONE
      関連事項:
    • getEarlyBeanReference

      protected ObjectSE getEarlyBeanReference(StringSE beanName, RootBeanDefinition mbd, ObjectSE bean)
      通常、循環参照を解決するために、指定された Bean に早期にアクセスするための参照を取得します。
      パラメーター:
      beanName - Bean の名前 (エラー処理のため)
      mbd - Bean のマージされた Bean 定義
      bean - 生の Bean インスタンス
      戻り値:
      Bean 参照として公開するオブジェクト
    • applyMergedBeanDefinitionPostProcessors

      protected void applyMergedBeanDefinitionPostProcessors(RootBeanDefinition mbd, ClassSE<?> beanType, StringSE beanName)
      指定された Bean 定義に MergedBeanDefinitionPostProcessors を適用し、postProcessMergedBeanDefinition メソッドを呼び出します。
      パラメーター:
      mbd - Bean のマージされた Bean 定義
      beanType - 管理対象 Bean インスタンスの実際の型
      beanName - Bean の名前
      関連事項:
    • resolveBeforeInstantiation

      @Nullable protected ObjectSE resolveBeforeInstantiation(StringSE beanName, RootBeanDefinition mbd)
      インスタンス化前のポストプロセッサーを適用し、指定された Bean のインスタンス化前のショートカットがあるかどうかを解決します。
      パラメーター:
      beanName - Bean の名前
      mbd - Bean の Bean 定義
      戻り値:
      ショートカットで決定された Bean インスタンス。存在しない場合は null 
    • applyBeanPostProcessorsBeforeInstantiation

      @Nullable protected ObjectSE applyBeanPostProcessorsBeforeInstantiation(ClassSE<?> beanClass, StringSE beanName)
      InstantiationAwareBeanPostProcessors を指定された Bean 定義に(クラスと名前で)適用し、それらの postProcessBeforeInstantiation メソッドを呼び出します。

      返されたオブジェクトは、実際にターゲット Bean をインスタンス化する代わりに、Bean として使用されます。ポストプロセッサーからの null 戻り値により、ターゲット Bean がインスタンス化されます。

      パラメーター:
      beanClass - インスタンス化される Bean のクラス
      beanName - Bean の名前
      戻り値:
      ターゲット Bean または null のデフォルトインスタンスの代わりに使用する Bean オブジェクト
      関連事項:
    • createBeanInstance

      protected BeanWrapper createBeanInstance(StringSE beanName, RootBeanDefinition mbd, @Nullable ObjectSE[] args)
      適切なインスタンス化戦略を使用して、指定された Bean の新しいインスタンスを作成します: ファクトリメソッド、コンストラクターのオートワイヤー、単純なインスタンス化。
      パラメーター:
      beanName - Bean の名前
      mbd - Bean の Bean 定義
      args - コンストラクターまたはファクトリメソッドの呼び出しに使用する明示的な引数
      戻り値:
      新しいインスタンスの BeanWrapper
      関連事項:
    • obtainInstanceFromSupplier

      @Nullable protected ObjectSE obtainInstanceFromSupplier(SupplierSE<?> supplier, StringSE beanName, RootBeanDefinition mbd) throws ExceptionSE
      指定されたサプライヤーから Bean インスタンスを取得します。
      パラメーター:
      supplier - 構成されたサプライヤー
      beanName - 対応する Bean 名
      mbd - Bean の Bean 定義
      戻り値:
      Bean インスタンス (おそらく null)
      例外:
      ExceptionSE
      導入:
      6.0.7
    • getObjectForBeanInstance

      protected ObjectSE getObjectForBeanInstance(ObjectSE beanInstance, StringSE name, StringSE beanName, @Nullable RootBeanDefinition mbd)
      現在作成されている Bean を、SupplierSE コールバック中にプログラムで取得される追加の Bean に依存するものとして暗黙的に登録するためにオーバーライドされます。
      オーバーライド:
      クラス AbstractBeanFactorygetObjectForBeanInstance 
      パラメーター:
      beanInstance - 共有 Bean インスタンス
      name - ファクトリ逆参照接頭辞を含む可能性がある名前
      beanName - 正規の Bean 名
      mbd - マージされた Bean 定義
      戻り値:
      Bean に公開するオブジェクト
      導入:
      5.0
      関連事項:
      • obtainFromSupplier(java.util.function.Supplier<?>, java.lang.String, org.springframework.beans.factory.support.RootBeanDefinition)
    • determineConstructorsFromBeanPostProcessors

      @Nullable protected ConstructorSE<?>[] determineConstructorsFromBeanPostProcessors(@Nullable ClassSE<?> beanClass, StringSE beanName) throws BeansException
      登録されたすべての SmartInstantiationAwareBeanPostProcessors をチェックして、指定された Bean に使用する候補コンストラクターを決定します。
      パラメーター:
      beanClass - Bean の生のクラス
      beanName - Bean の名前
      戻り値:
      候補コンストラクター、または何も指定されていない場合は null 
      例外:
      BeansException - エラーの場合
      関連事項:
    • instantiateBean

      protected BeanWrapper instantiateBean(StringSE beanName, RootBeanDefinition mbd)
      デフォルトのコンストラクターを使用して、指定された Bean をインスタンス化します。
      パラメーター:
      beanName - Bean の名前
      mbd - Bean の Bean 定義
      戻り値:
      新しいインスタンスの BeanWrapper
    • instantiateUsingFactoryMethod

      protected BeanWrapper instantiateUsingFactoryMethod(StringSE beanName, RootBeanDefinition mbd, @Nullable ObjectSE[] explicitArgs)
      名前付きファクトリメソッドを使用して Bean をインスタンス化します。mbd パラメーターが factoryBean ではなくクラス、または依存性注入を使用して設定されたファクトリオブジェクト自体のインスタンス変数を指定している場合、メソッドは静的である可能性があります。
      パラメーター:
      beanName - Bean の名前
      mbd - Bean の Bean 定義
      explicitArgs - getBean メソッドを介してプログラムで渡された引数値、または存在しない場合は null (Bean 定義からのコンストラクター引数値の使用を意味します)
      戻り値:
      新しいインスタンスの BeanWrapper
      関連事項:
    • autowireConstructor

      protected BeanWrapper autowireConstructor(StringSE beanName, RootBeanDefinition mbd, @Nullable ConstructorSE<?>[] ctors, @Nullable ObjectSE[] explicitArgs)
      「autowire コンストラクター」(型別のコンストラクター引数を使用)の動作。明示的なコンストラクター引数値が指定されている場合にも適用され、残りのすべての引数を Bean ファクトリの Bean と照合します。

      これはコンストラクターインジェクションに対応します。このモードでは、Spring Bean ファクトリは、コンストラクターベースの依存関係の解決を期待するコンポーネントをホストできます。

      パラメーター:
      beanName - Bean の名前
      mbd - Bean の Bean 定義
      ctors - 選択された候補コンストラクター
      explicitArgs - getBean メソッドを介してプログラムで渡された引数値、または存在しない場合は null (Bean 定義からのコンストラクター引数値の使用を意味します)
      戻り値:
      新しいインスタンスの BeanWrapper
    • populateBean

      protected void populateBean(StringSE beanName, RootBeanDefinition mbd, @Nullable BeanWrapper bw)
      指定された BeanWrapper の Bean インスタンスに、Bean 定義からのプロパティ値を取り込みます。
      パラメーター:
      beanName - Bean の名前
      mbd - Bean の Bean 定義
      bw - BeanWrapper と Bean インスタンス
    • autowireByName

      protected void autowireByName(StringSE beanName, AbstractBeanDefinition mbd, BeanWrapper bw, MutablePropertyValues pvs)
      autowire が "byName" に設定されている場合、このファクトリ内の他の Bean への参照で欠落しているプロパティ値を入力します。
      パラメーター:
      beanName - 接続している Bean の名前。メッセージのデバッグに役立ちます。関数には使用されません。
      mbd - オートワイヤーを通じて更新する Bean 定義
      bw - Bean に関する情報を取得できる BeanWrapper
      pvs - ワイヤードオブジェクトを登録する PropertyValues
    • autowireByType

      protected void autowireByType(StringSE beanName, AbstractBeanDefinition mbd, BeanWrapper bw, MutablePropertyValues pvs)
      「型ごとのオートワイヤー」(型ごとの Bean プロパティ)の動作を定義する抽象メソッド。

      これは PicoContainer のデフォルトに似ており、Bean ファクトリにはプロパティ型の Bean が 1 つだけ存在する必要があります。これにより、Bean ファクトリは小さな名前空間の構成が簡単になりますが、より大きなアプリケーションの標準の Spring の動作と同じようには機能しません。

      パラメーター:
      beanName - 型ごとにオートワイヤーする Bean の名前
      mbd - オートワイヤーを通じて更新するためのマージされた Bean 定義
      bw - Bean に関する情報を取得できる BeanWrapper
      pvs - ワイヤードオブジェクトを登録する PropertyValues
    • unsatisfiedNonSimpleProperties

      protected StringSE[] unsatisfiedNonSimpleProperties(AbstractBeanDefinition mbd, BeanWrapper bw)
      満たされていない単純でない Bean プロパティの配列を返します。これらはおそらく、ファクトリ内の他の Bean への不十分な参照です。プリミティブや文字列などの単純なプロパティは含まれません。
      パラメーター:
      mbd - Bean が作成されたマージ済み Bean 定義
      bw - BeanWrapper Bean は
      戻り値:
      Bean プロパティ名の配列
      関連事項:
    • filterPropertyDescriptorsForDependencyCheck

      protected PropertyDescriptorSE[] filterPropertyDescriptorsForDependencyCheck(BeanWrapper bw, boolean cache)
      指定された BeanWrapper から PropertyDescriptors のフィルターされたセットを抽出します。無視された依存関係型または無視された依存関係インターフェースで定義されたプロパティは除外します。
      パラメーター:
      bw - BeanWrapper Bean は
      cache - 指定された Bean クラスのフィルタリングされた PropertyDescriptors をキャッシュするかどうか
      戻り値:
      フィルターされた PropertyDescriptors
      関連事項:
    • filterPropertyDescriptorsForDependencyCheck

      protected PropertyDescriptorSE[] filterPropertyDescriptorsForDependencyCheck(BeanWrapper bw)
      指定された BeanWrapper から PropertyDescriptors のフィルターされたセットを抽出します。無視された依存関係型または無視された依存関係インターフェースで定義されたプロパティは除外します。
      パラメーター:
      bw - BeanWrapper Bean は
      戻り値:
      フィルターされた PropertyDescriptors
      関連事項:
    • isExcludedFromDependencyCheck

      protected boolean isExcludedFromDependencyCheck(PropertyDescriptorSE pd)
      指定された Bean プロパティが依存関係チェックから除外されるかどうかを決定します。

      この実装は、CGLIB によって定義されたプロパティと、無視された依存関係型と一致する型のプロパティ、または無視された依存関係インターフェースによって定義されたプロパティを除外します。

      パラメーター:
      pd - Bean プロパティの PropertyDescriptor
      戻り値:
      Bean プロパティが除外されるかどうか
      関連事項:
    • checkDependencies

      protected void checkDependencies(StringSE beanName, AbstractBeanDefinition mbd, PropertyDescriptorSE[] pds, @Nullable PropertyValues pvs) throws UnsatisfiedDependencyException
      必要に応じて、公開されているすべてのプロパティが設定されていることを確認します。依存関係のチェックには、オブジェクト(協調 Bean)、単純(プリミティブと文字列)、すべて(両方)があります。
      パラメーター:
      beanName - Bean の名前
      mbd - Bean が作成されたマージ済み Bean 定義
      pds - ターゲット Bean に関連するプロパティ記述子
      pvs - Bean に適用されるプロパティ値
      例外:
      UnsatisfiedDependencyException
      関連事項:
    • applyPropertyValues

      protected void applyPropertyValues(StringSE beanName, BeanDefinition mbd, BeanWrapper bw, PropertyValues pvs)
      指定されたプロパティ値を適用し、この Bean ファクトリ内の他の Bean へのランタイム参照を解決します。ディープコピーを使用する必要があるため、このプロパティを永続的に変更しません。
      パラメーター:
      beanName - より良い例外情報のために渡された Bean 名
      mbd - マージされた Bean 定義
      bw - ターゲットオブジェクトをラップする BeanWrapper
      pvs - 新しいプロパティ値
    • initializeBean

      protected ObjectSE initializeBean(StringSE beanName, ObjectSE bean, @Nullable RootBeanDefinition mbd)
      指定された Bean インスタンスを初期化し、ファクトリコールバックと init メソッドおよび Bean ポストプロセッサーを適用します。

      従来から定義されている Bean の場合は createBean(java.lang.Class<T>) から、既存の Bean インスタンスの場合は initializeBean(java.lang.Object, java.lang.String) から呼び出されます。

      パラメーター:
      beanName - ファクトリでの Bean の名前 (デバッグ用)
      bean - 初期化する必要がある新しい Bean インスタンス
      mbd - Bean が作成された Bean 定義 (既存の Bean インスタンスが指定されている場合は、null にすることもできます)
      戻り値:
      初期化された Bean インスタンス (潜在的に包まれた)
      関連事項:
    • invokeInitMethods

      protected void invokeInitMethods(StringSE beanName, ObjectSE bean, @Nullable RootBeanDefinition mbd) throws ThrowableSE
      すべてのプロパティが設定された後で Bean にそれ自体を初期化する機会と、その所有する Bean ファクトリ (このオブジェクト) について知る機会を与えます。

      これは、Bean が InitializingBean を実装しているか、カスタム init メソッドを定義しているかどうかを確認し、実装している場合は必要なコールバックを呼び出すことを意味します。

      パラメーター:
      beanName - ファクトリでの Bean の名前 (デバッグ用)
      bean - 初期化する必要がある新しい Bean インスタンス
      mbd - Bean が作成されたマージ済み Bean 定義 (既存の Bean インスタンスが指定されている場合は、null にすることもできます)
      例外:
      ThrowableSE - init メソッドまたは呼び出しプロセスによってスローされた場合
      関連事項:
    • invokeCustomInitMethod

      protected void invokeCustomInitMethod(StringSE beanName, ObjectSE bean, RootBeanDefinition mbd, StringSE initMethodName) throws ThrowableSE
      指定された Bean で指定されたカスタム init メソッドを呼び出します。

      invokeInitMethods(String, Object, RootBeanDefinition) によって呼び出されます。

      引数付きの init メソッドのカスタム解決のためにサブクラスでオーバーライドできます。

      例外:
      ThrowableSE
      関連事項:
    • postProcessObjectFromFactoryBean

      protected ObjectSE postProcessObjectFromFactoryBean(ObjectSE object, StringSE beanName)
      登録されたすべての BeanPostProcessors の postProcessAfterInitialization コールバックを適用し、FactoryBeans から取得したオブジェクトを後処理する(たとえば、自動プロキシする)機会を与えます。
      オーバーライド:
      クラス FactoryBeanRegistrySupportpostProcessObjectFromFactoryBean 
      パラメーター:
      object - FactoryBean から取得したオブジェクト。
      beanName - Bean の名前
      戻り値:
      公開するオブジェクト
      関連事項:
    • removeSingleton

      protected void removeSingleton(StringSE beanName)
      オーバーライドして FactoryBean インスタンスキャッシュもクリアします。
      オーバーライド:
      クラス FactoryBeanRegistrySupportremoveSingleton 
      パラメーター:
      beanName - Bean の名前
      関連事項:
    • clearSingletonCache

      protected void clearSingletonCache()
      オーバーライドして FactoryBean インスタンスキャッシュもクリアします。
      オーバーライド:
      クラス FactoryBeanRegistrySupportclearSingletonCache