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 定義を検索できるファクトリの場合、通常、一致する Bean はそのような検索を通じて実装されます。他のファクトリスタイルの場合、簡略化されたマッチングアルゴリズムを実装できます。
このクラスは、Bean 定義レジストリ機能を想定または実装しないことに注意してください。ListableBeanFactory
および BeanDefinitionRegistry
インターフェースの実装については、それぞれ DefaultListableBeanFactory
を参照してください。これらは、それぞれそのようなファクトリの API および SPI ビューを表します。
RootBeanDefinition
, DefaultListableBeanFactory
, BeanDefinitionRegistry
logger
AUTOWIRE_AUTODETECT, AUTOWIRE_BY_NAME, AUTOWIRE_BY_TYPE, AUTOWIRE_CONSTRUCTOR, AUTOWIRE_NO, ORIGINAL_INSTANCE_SUFFIX
FACTORY_BEAN_PREFIX
SCOPE_PROTOTYPE, SCOPE_SINGLETON
コンストラクターと説明 |
---|
AbstractAutowireCapableBeanFactory() 新しい AbstractAutowireCapableBeanFactory を作成します。 |
AbstractAutowireCapableBeanFactory(BeanFactory parentBeanFactory) 指定された親を持つ新しい AbstractAutowireCapableBeanFactory を作成します。 |
修飾子と型 | メソッドと説明 |
---|---|
ObjectSE | applyBeanPostProcessorsAfterInitialization(ObjectSE existingBean, StringSE beanName) 指定された既存の Bean インスタンスに BeanPostProcessors を適用し、postProcessAfterInitialization メソッドを呼び出します。 |
ObjectSE | applyBeanPostProcessorsBeforeInitialization(ObjectSE existingBean, StringSE beanName) 指定された既存の Bean インスタンスに BeanPostProcessors を適用し、postProcessBeforeInitialization メソッドを呼び出します。 |
protected ObjectSE | applyBeanPostProcessorsBeforeInstantiation(ClassSE<?> beanClass, StringSE beanName) InstantiationAwareBeanPostProcessors を指定された Bean 定義に(クラスと名前で)適用し、それらの postProcessBeforeInstantiation メソッドを呼び出します。 |
void | applyBeanPropertyValues(ObjectSE existingBean, StringSE beanName) 指定された名前の Bean 定義のプロパティ値を、指定された Bean インスタンスに適用します。 |
protected void | applyMergedBeanDefinitionPostProcessors(RootBeanDefinition mbd, ClassSE<?> beanType, StringSE beanName) 指定された Bean 定義に MergedBeanDefinitionPostProcessors を適用し、 postProcessMergedBeanDefinition メソッドを呼び出します。 |
protected void | applyPropertyValues(StringSE beanName, BeanDefinition mbd, BeanWrapper bw, PropertyValues pvs) 指定されたプロパティ値を適用し、この Bean ファクトリ内の他の Bean へのランタイム参照を解決します。 |
ObjectSE | autowire(ClassSE<?> beanClass, int autowireMode, boolean dependencyCheck) 指定された autowire 戦略を使用して、指定されたクラスの新しい Bean インスタンスをインスタンス化します。 |
void | autowireBean(ObjectSE existingBean) インスタンス化後のコールバックと Bean プロパティの後処理を適用して、指定された Bean インスタンスにデータを入力します(例: |
void | autowireBeanProperties(ObjectSE existingBean, int autowireMode, boolean dependencyCheck) 指定された Bean インスタンスの Bean プロパティを名前または型でオートワイヤーします。 |
protected void | autowireByName(StringSE beanName, AbstractBeanDefinition mbd, BeanWrapper bw, MutablePropertyValues pvs) autowire が "byName" に設定されている場合、このファクトリ内の他の Bean への参照を使用して、不足しているプロパティ値を入力します。 |
protected void | autowireByType(StringSE beanName, AbstractBeanDefinition mbd, BeanWrapper bw, MutablePropertyValues pvs) 「型ごとのオートワイヤー」(型ごとの Bean プロパティ)の動作を定義する抽象メソッド。 |
protected BeanWrapper | autowireConstructor(StringSE beanName, RootBeanDefinition mbd, ConstructorSE<?>[] ctors, ObjectSE[] explicitArgs) 「型ごとのコンストラクター引数を使用した」「オートワイヤーコンストラクター」の動作。 |
protected void | checkDependencies(StringSE beanName, AbstractBeanDefinition mbd, PropertyDescriptorSE[] pds, PropertyValues pvs) 必要に応じて、公開されているすべてのプロパティが設定されていることを確認する依存関係チェックを実行します。 |
protected void | clearSingletonCache() オーバーライドして FactoryBean インスタンスキャッシュもクリアします。 |
ObjectSE | configureBean(ObjectSE existingBean, StringSE beanName) 指定された生の Bean を構成します: Bean プロパティのオートワイヤー、Bean プロパティ値の適用、 setBeanName や setBeanFactory などのファクトリコールバックの適用、およびすべての Bean ポストプロセッサー(特定の生の Bean をラップするものを含む)も適用します。 |
void | copyConfigurationFrom(ConfigurableBeanFactory otherFactory) 指定された他のファクトリから関連するすべての構成をコピーします。 |
ObjectSE | createBean(ClassSE<?> beanClass, int autowireMode, boolean dependencyCheck) 指定されたオートワイヤー戦略を使用して、指定されたクラスの新しい Bean インスタンスを完全に作成します。 |
<T> T | createBean(ClassSE<T> beanClass) 指定されたクラスの新しい Bean インスタンスを完全に作成します。 |
protected ObjectSE | createBean(StringSE beanName, RootBeanDefinition mbd, ObjectSE[] args) このクラスの中心的な方法: Bean インスタンスを作成し、Bean インスタンスに入力し、ポストプロセッサーを適用するなど。 |
protected BeanWrapper | createBeanInstance(StringSE beanName, RootBeanDefinition mbd, ObjectSE[] args) 適切なインスタンス化戦略を使用して、指定された Bean の新しいインスタンスを作成します: ファクトリメソッド、コンストラクターのオートワイヤー、単純なインスタンス化。 |
void | destroyBean(ObjectSE existingBean) 指定された Bean インスタンス(通常 AutowireCapableBeanFactory.createBean(java.lang.Class<T>) から取得)を破棄し、DisposableBean 契約と登録済み DestructionAwareBeanPostProcessors を適用します。 |
protected ConstructorSE<?>[] | determineConstructorsFromBeanPostProcessors(ClassSE<?> beanClass, StringSE beanName) 登録されたすべての SmartInstantiationAwareBeanPostProcessors をチェックして、指定された Bean に使用する候補コンストラクターを決定します。 |
protected ClassSE<?> | determineTargetType(StringSE beanName, RootBeanDefinition mbd, ClassSE<?>... typesToMatch) 指定された Bean 定義のターゲット型を決定します。 |
protected ObjectSE | doCreateBean(StringSE beanName, RootBeanDefinition mbd, ObjectSE[] args) 指定された Bean を実際に作成します。 |
protected PropertyDescriptorSE[] | filterPropertyDescriptorsForDependencyCheck(BeanWrapper bw) 指定された BeanWrapper から PropertyDescriptors のフィルターされたセットを抽出します。無視された依存関係型または無視された依存関係インターフェースで定義されたプロパティは除外します。 |
protected PropertyDescriptorSE[] | filterPropertyDescriptorsForDependencyCheck(BeanWrapper bw, boolean cache) 指定された BeanWrapper から PropertyDescriptors のフィルターされたセットを抽出します。無視された依存関係型または無視された依存関係インターフェースで定義されたプロパティは除外します。 |
protected ObjectSE | getEarlyBeanReference(StringSE beanName, RootBeanDefinition mbd, ObjectSE bean) 通常、循環参照を解決するために、指定された Bean に早期にアクセスするための参照を取得します。 |
protected InstantiationStrategy | getInstantiationStrategy() Bean インスタンスの作成に使用するインスタンス化戦略を返します。 |
protected ObjectSE | getObjectForBeanInstance(ObjectSE beanInstance, StringSE name, StringSE beanName, RootBeanDefinition mbd) 現在作成されている Bean を、 Supplier SE コールバック中にプログラムで取得される追加の Bean に依存するものとして暗黙的に登録するためにオーバーライドされます。 |
protected ParameterNameDiscoverer | getParameterNameDiscoverer() 必要に応じて、メソッドパラメーター名の解決に使用する ParameterNameDiscoverer を返します。 |
protected ClassSE<?> | getTypeForFactoryBean(StringSE beanName, RootBeanDefinition mbd) この実装は、FactoryBean のジェネリクスパラメーターメタデータ(存在する場合)を照会して、オブジェクト型を判別しようとします。 |
protected ClassSE<?> | getTypeForFactoryMethod(StringSE beanName, RootBeanDefinition mbd, ClassSE<?>... typesToMatch) ファクトリメソッドに基づいて、指定された Bean 定義のターゲット型を決定します。 |
void | ignoreDependencyInterface(ClassSE<?> ifc) オートワイヤーの指定された依存関係インターフェースを無視します。 |
void | ignoreDependencyType(ClassSE<?> type) オートワイヤーの指定された依存関係型(たとえば、String)を無視します。 |
ObjectSE | initializeBean(ObjectSE existingBean, StringSE beanName) setBeanName や setBeanFactory などのファクトリコールバックを適用し、すべての Bean ポストプロセッサー(指定された raw Bean をラップするものを含む)も適用して、指定された raw Bean を初期化します。 |
protected ObjectSE | initializeBean(StringSE beanName, ObjectSE bean, RootBeanDefinition mbd) 指定された Bean インスタンスを初期化し、ファクトリコールバックと init メソッドおよび Bean ポストプロセッサーを適用します。 |
protected BeanWrapper | instantiateBean(StringSE beanName, RootBeanDefinition mbd) デフォルトのコンストラクターを使用して、指定された Bean をインスタンス化します。 |
protected BeanWrapper | instantiateUsingFactoryMethod(StringSE beanName, RootBeanDefinition mbd, ObjectSE[] explicitArgs) 名前付きファクトリメソッドを使用して Bean をインスタンス化します。 |
protected void | invokeCustomInitMethod(StringSE beanName, ObjectSE bean, RootBeanDefinition mbd) 指定された Bean で指定されたカスタム init メソッドを呼び出します。 |
protected void | invokeInitMethods(StringSE beanName, ObjectSE bean, RootBeanDefinition mbd) Bean にすべてのプロパティが設定されたときに反応する機会を与え、所有する Bean ファクトリ(このオブジェクト)を知る機会を与えます。 |
protected boolean | isExcludedFromDependencyCheck(PropertyDescriptorSE pd) 指定された Bean プロパティが依存関係チェックから除外されるかどうかを決定します。 |
protected BeanWrapper | obtainFromSupplier(SupplierSE<?> instanceSupplier, StringSE beanName) 指定されたサプライヤーから Bean インスタンスを取得します。 |
protected void | populateBean(StringSE beanName, RootBeanDefinition mbd, BeanWrapper bw) 指定された BeanWrapper の Bean インスタンスに、Bean 定義からのプロパティ値を取り込みます。 |
protected ObjectSE | postProcessObjectFromFactoryBean(ObjectSE object, StringSE beanName) 登録されたすべての BeanPostProcessors の postProcessAfterInitialization コールバックを適用し、FactoryBeans から取得したオブジェクトを後処理する(たとえば、自動プロキシする)機会を与えます。 |
protected ClassSE<?> | predictBeanType(StringSE beanName, RootBeanDefinition mbd, ClassSE<?>... typesToMatch) 指定された Bean の(処理された Bean インスタンスの)最終的な Bean 型を予測します。 |
protected void | removeSingleton(StringSE beanName) オーバーライドして FactoryBean インスタンスキャッシュもクリアします。 |
ObjectSE | resolveBeanByName(StringSE name, DependencyDescriptor descriptor) 指定された Bean 名の Bean インスタンスを解決し、ターゲットファクトリメソッドに公開するための依存関係記述子を提供します。 |
protected ObjectSE | resolveBeforeInstantiation(StringSE beanName, RootBeanDefinition mbd) インスタンス化前のポストプロセッサーを適用し、指定された Bean のインスタンス化前のショートカットがあるかどうかを解決します。 |
ObjectSE | resolveDependency(DependencyDescriptor descriptor, StringSE requestingBeanName) このファクトリで定義された Bean に対する指定された依存関係を解決します。 |
void | setAllowCircularReferences(boolean allowCircularReferences) Bean 間の循環参照を許可するかどうかを設定し、自動的に解決しようとします。 |
void | setAllowRawInjectionDespiteWrapping(boolean allowRawInjectionDespiteWrapping) 注入された Bean が最終的にラップされる場合(たとえば、AOP 自動プロキシ経由)にも関わらず、他の Bean のプロパティへの Bean インスタンスの生の注入を許可するかどうかを設定します。 |
void | setInstantiationStrategy(InstantiationStrategy instantiationStrategy) Bean インスタンスの作成に使用するインスタンス化戦略を設定します。 |
void | setParameterNameDiscoverer(ParameterNameDiscoverer parameterNameDiscoverer) 必要に応じて、メソッドパラメーター名の解決に使用する ParameterNameDiscoverer を設定します(例: |
protected StringSE[] | unsatisfiedNonSimpleProperties(AbstractBeanDefinition mbd, BeanWrapper bw) 満たされていない非シンプルな Bean プロパティの配列を返します。 |
addBeanPostProcessor, addEmbeddedValueResolver, addPropertyEditorRegistrar, afterPrototypeCreation, beforePrototypeCreation, checkMergedBeanDefinition, cleanupAfterBeanCreationFailure, clearMergedBeanDefinition, clearMetadataCache, containsBean, containsBeanDefinition, containsLocalBean, copyRegisteredEditorsTo, destroyBean, destroyBean, destroyScopedBean, doGetBean, evaluateBeanDefinitionString, getAccessControlContext, getAliases, getBean, getBean, getBean, getBean, getBeanClassLoader, getBeanDefinition, getBeanExpressionResolver, getBeanPostProcessorCount, getBeanPostProcessors, getConversionService, getCustomEditors, getCustomTypeConverter, getMergedBeanDefinition, getMergedBeanDefinition, getMergedBeanDefinition, getMergedLocalBeanDefinition, getParentBeanFactory, getPropertyEditorRegistrars, getRegisteredScope, getRegisteredScopeNames, getTempClassLoader, getType, getTypeConverter, hasBeanCreationStarted, hasDestructionAwareBeanPostProcessors, hasEmbeddedValueResolver, hasInstantiationAwareBeanPostProcessors, initBeanWrapper, isActuallyInCreation, isBeanEligibleForMetadataCaching, isBeanNameInUse, isCacheBeanMetadata, isFactoryBean, isFactoryBean, isPrototype, isPrototypeCurrentlyInCreation, isSingleton, isTypeMatch, isTypeMatch, markBeanAsCreated, originalBeanName, registerCustomEditor, registerCustomEditors, registerDisposableBeanIfNecessary, registerScope, removeSingletonIfCreatedForTypeCheckOnly, requiresDestruction, resolveBeanClass, resolveEmbeddedValue, setBeanClassLoader, setBeanExpressionResolver, setCacheBeanMetadata, setConversionService, setParentBeanFactory, setSecurityContextProvider, setTempClassLoader, setTypeConverter, transformedBeanName
getCachedObjectForFactoryBean, getFactoryBean, getObjectFromFactoryBean, getTypeForFactoryBean
addSingleton, addSingletonFactory, afterSingletonCreation, beforeSingletonCreation, containsSingleton, destroyBean, destroySingleton, destroySingletons, getDependenciesForBean, getDependentBeans, getSingleton, getSingleton, getSingleton, getSingletonCount, getSingletonMutex, getSingletonNames, hasDependentBean, isCurrentlyInCreation, isDependent, isSingletonCurrentlyInCreation, onSuppressedException, registerContainedBean, registerDependentBean, registerDisposableBean, registerSingleton, setCurrentlyInCreation
allowAliasOverriding, canonicalName, checkForAliasCircle, hasAlias, isAlias, registerAlias, removeAlias, resolveAliases
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
resolveDependency, resolveNamedBean
containsBean, getAliases, getBean, getBean, getBean, getBean, getBean, getBeanProvider, getBeanProvider, getType, isPrototype, isSingleton, isTypeMatch, isTypeMatch
destroySingletons, getDependenciesForBean, getDependentBeans, isCurrentlyInCreation, registerAlias, registerDependentBean, resolveAliases, setCurrentlyInCreation
containsSingleton, getSingleton, getSingletonCount, getSingletonMutex, getSingletonNames, registerSingleton
public AbstractAutowireCapableBeanFactory()
public AbstractAutowireCapableBeanFactory(@Nullable BeanFactory parentBeanFactory)
parentBeanFactory
- 親 Bean ファクトリ、または存在しない場合は null
public void setInstantiationStrategy(InstantiationStrategy instantiationStrategy)
protected InstantiationStrategy getInstantiationStrategy()
public void setParameterNameDiscoverer(@Nullable ParameterNameDiscoverer parameterNameDiscoverer)
デフォルトは DefaultParameterNameDiscoverer
です。
@Nullable protected ParameterNameDiscoverer getParameterNameDiscoverer()
public void setAllowCircularReferences(boolean allowCircularReferences)
循環参照解決は、関係する Bean の 1 つが、まだ完全に初期化されていない別の Bean への参照を受け取ることに注意してください。これにより、初期化に微妙な副作用が生じる可能性があります。ただし、多くのシナリオでうまく機能します。
デフォルトは "true" です。これをオフにすると、循環参照が発生したときに例外がスローされ、完全に許可されなくなります。
注意 : Bean 間の循環参照に依存しないことをお勧めします。アプリケーションロジックをリファクタリングして、関連する 2 つの Bean を、それらの共通ロジックをカプセル化する 3 番目の Bean に委譲します。
public void setAllowRawInjectionDespiteWrapping(boolean allowRawInjectionDespiteWrapping)
これは、他の方法では解決できない循環参照の場合の最後の手段としてのみ使用されます。基本的に、Bean 接続プロセス全体の障害よりも生のインスタンスを挿入することを優先します。
Spring 2.0 では、デフォルトは "false" です。これをオンにすると、ラップされていない生の Bean が一部の参照に挿入されます。これは、Spring 1.2 の(おそらくクリーンではない)デフォルトの動作でした。
注意 : 一般に、特に自動プロキシを使用する場合は、Bean 間の循環参照に依存しないことをお勧めします。
public void ignoreDependencyType(ClassSE<?> type)
public void ignoreDependencyInterface(ClassSE<?> ifc)
通常、これは、BeanFactory から BeanFactoryAware または ApplicationContext から ApplicationContextAware など、他の方法で解決される依存関係を登録するために、アプリケーションコンテキストによって使用されます。
デフォルトでは、BeanFactoryAware インターフェースのみが無視されます。さらに無視する型については、型ごとにこのメソッドを呼び出します。
public void copyConfigurationFrom(ConfigurableBeanFactory otherFactory)
ConfigurableBeanFactory
BeanPostProcessors、スコープ、ファクトリ固有の内部設定だけでなく、すべての標準構成設定を含める必要があります。BeanDefinition オブジェクトや Bean 名のエイリアスなど、実際の Bean 定義のメタデータを含めないでください。
ConfigurableBeanFactory
の copyConfigurationFrom
AbstractBeanFactory
の copyConfigurationFrom
otherFactory
- コピー元のもう 1 つの BeanFactorypublic <T> T createBean(ClassSE<T> beanClass) throws BeansException
AutowireCapableBeanFactory
適用可能なすべての BeanPostProcessors
を含む、Bean の完全な初期化を実行します。
メモ: これは、新しいインスタンスを作成し、アノテーション付きのフィールドとメソッドを設定し、すべての標準 Bean 初期化コールバックを適用することを目的としています。これは 、従来の名前によるプロパティや型によるプロパティのオートワイヤーを意味するものではありません。これらの目的には AutowireCapableBeanFactory.createBean(Class, int, boolean)
を使用してください。
AutowireCapableBeanFactory
の createBean
beanClass
- 作成する Bean のクラス BeansException
- インスタンス化または接続が失敗した場合 public void autowireBean(ObjectSE existingBean)
AutowireCapableBeanFactory
メモ: これは基本的に、新しいインスタンスまたは非直列化されたインスタンスのいずれかのために、アノテーション付きのフィールドとメソッドを(再)入力することを目的としています。これは 、従来の名前によるプロパティや型によるプロパティのオートワイヤーを意味するものではありません。これらの目的には AutowireCapableBeanFactory.autowireBeanProperties(java.lang.Object, int, boolean)
を使用してください。
AutowireCapableBeanFactory
の autowireBean
existingBean
- 既存の Bean インスタンス public ObjectSE configureBean(ObjectSE existingBean, StringSE beanName) throws BeansException
AutowireCapableBeanFactory
setBeanName
や setBeanFactory
などのファクトリコールバックの適用、およびすべての Bean ポストプロセッサー(特定の生の Bean をラップするものを含む)も適用します。 これは実質的に AutowireCapableBeanFactory.initializeBean(java.lang.Object, java.lang.String)
が提供するもののスーパーセットであり、対応する Bean 定義で指定された構成を完全に適用します。 注: このメソッドには、指定された名前の Bean 定義が必要です!
AutowireCapableBeanFactory
の configureBean
existingBean
- 既存の Bean インスタンス beanName
- Bean の名前、必要に応じて渡される (その名前の Bean 定義が利用可能でなければなりません)NoSuchBeanDefinitionException
- 指定された名前の Bean 定義がない場合 BeansException
- 初期化が失敗した場合 AutowireCapableBeanFactory.initializeBean(java.lang.Object, java.lang.String)
public ObjectSE createBean(ClassSE<?> beanClass, int autowireMode, boolean dependencyCheck) throws BeansException
AutowireCapableBeanFactory
適用可能なすべての BeanPostProcessors
を含む、Bean の完全な初期化を実行します。これは事実上、AutowireCapableBeanFactory.autowire(java.lang.Class<?>, int, boolean)
が提供するもののスーパーセットであり、AutowireCapableBeanFactory.initializeBean(java.lang.Object, java.lang.String)
の動作を追加します。
AutowireCapableBeanFactory
の createBean
beanClass
- 作成する Bean のクラス autowireMode
- このインターフェースの定数を使用して、名前または型 dependencyCheck
- オブジェクトの依存性チェックを実行するかどうか (コンストラクターのオートワイヤーには適用されないため、そこで無視されます)BeansException
- インスタンス化または接続が失敗した場合 AutowireCapableBeanFactory.AUTOWIRE_NO
, AutowireCapableBeanFactory.AUTOWIRE_BY_NAME
, AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE
, AutowireCapableBeanFactory.AUTOWIRE_CONSTRUCTOR
public ObjectSE autowire(ClassSE<?> beanClass, int autowireMode, boolean dependencyCheck) throws BeansException
AutowireCapableBeanFactory
AUTOWIRE_NO
で呼び出すこともできます(たとえば、アノテーション駆動型の注入)。 標準の BeanPostProcessors
コールバックを適用せず、Bean のさらなる初期化を実行しません。このインターフェースは、これらの目的のために、たとえば AutowireCapableBeanFactory.initializeBean(java.lang.Object, java.lang.String)
のような、きめ細かい操作を提供します。ただし、インスタンスの構築に適用可能な場合は、InstantiationAwareBeanPostProcessor
コールバックが適用されます。
AutowireCapableBeanFactory
の autowire
beanClass
- インスタンス化する Bean のクラス autowireMode
- このインターフェースの定数を使用して、名前または型 dependencyCheck
- Bean インスタンス内のオブジェクト参照の依存性チェックを実行するかどうか (コンストラクターのオートワイヤーには適用されないため、そこで無視されます)BeansException
- インスタンス化または接続が失敗した場合 AutowireCapableBeanFactory.AUTOWIRE_NO
, AutowireCapableBeanFactory.AUTOWIRE_BY_NAME
, AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE
, AutowireCapableBeanFactory.AUTOWIRE_CONSTRUCTOR
, AutowireCapableBeanFactory.AUTOWIRE_AUTODETECT
, AutowireCapableBeanFactory.initializeBean(java.lang.Object, java.lang.String)
, AutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(java.lang.Object, java.lang.String)
, AutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(java.lang.Object, java.lang.String)
public void autowireBeanProperties(ObjectSE existingBean, int autowireMode, boolean dependencyCheck) throws BeansException
AutowireCapableBeanFactory
AUTOWIRE_NO
で呼び出すこともできます(例: アノテーション駆動型の注入)。 標準の BeanPostProcessors
コールバックを適用せず、Bean のさらなる初期化を実行しません。このインターフェースは、これらの目的のために、たとえば AutowireCapableBeanFactory.initializeBean(java.lang.Object, java.lang.String)
のような、きめ細かい操作を提供します。ただし、インスタンスの構成に該当する場合は、InstantiationAwareBeanPostProcessor
コールバックが適用されます。
AutowireCapableBeanFactory
の autowireBeanProperties
existingBean
- 既存の Bean インスタンス autowireMode
- このインターフェースの定数を使用して、名前または型 dependencyCheck
- Bean インスタンス内のオブジェクト参照の依存性チェックを実行するかどうか BeansException
- 接続に失敗した場合 AutowireCapableBeanFactory.AUTOWIRE_BY_NAME
, AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE
, AutowireCapableBeanFactory.AUTOWIRE_NO
public void applyBeanPropertyValues(ObjectSE existingBean, StringSE beanName) throws BeansException
AutowireCapableBeanFactory
このメソッドは 、 Bean プロパティをオートワイヤーしません。明示的に定義されたプロパティ値を適用するだけです。AutowireCapableBeanFactory.autowireBeanProperties(java.lang.Object, int, boolean)
メソッドを使用して、既存の Bean インスタンスをオートワイヤーします。 注: このメソッドには、指定された名前の Bean 定義が必要です!
標準の BeanPostProcessors
コールバックを適用せず、Bean のさらなる初期化を実行しません。このインターフェースは、これらの目的のために、たとえば AutowireCapableBeanFactory.initializeBean(java.lang.Object, java.lang.String)
のような、きめ細かい操作を提供します。ただし、インスタンスの構成に該当する場合は、InstantiationAwareBeanPostProcessor
コールバックが適用されます。
AutowireCapableBeanFactory
の applyBeanPropertyValues
existingBean
- 既存の Bean インスタンス beanName
- Bean ファクトリ内の Bean 定義の名前 (その名前の Bean 定義が利用可能でなければなりません)NoSuchBeanDefinitionException
- 指定された名前の Bean 定義がない場合 BeansException
- プロパティ値の適用に失敗した場合 AutowireCapableBeanFactory.autowireBeanProperties(java.lang.Object, int, boolean)
public ObjectSE initializeBean(ObjectSE existingBean, StringSE beanName)
AutowireCapableBeanFactory
setBeanName
や setBeanFactory
などのファクトリコールバックを適用し、すべての Bean ポストプロセッサー(指定された raw Bean をラップするものを含む)も適用して、指定された raw Bean を初期化します。指定された名前の Bean 定義が Bean ファクトリに存在する必要はないことに注意してください。渡された Bean 名は単にコールバックに使用されますが、登録された Bean 定義に対してはチェックされません。
AutowireCapableBeanFactory
の initializeBean
existingBean
- 既存の Bean インスタンス beanName
- Bean の名前、必要に応じて渡される (BeanPostProcessors
にのみ渡されます。指定されたインスタンスを強制的に返すために AutowireCapableBeanFactory.ORIGINAL_INSTANCE_SUFFIX
規則に従うことができます。つまり、プロキシなどはありません。)AutowireCapableBeanFactory.ORIGINAL_INSTANCE_SUFFIX
public ObjectSE applyBeanPostProcessorsBeforeInitialization(ObjectSE existingBean, StringSE beanName) throws BeansException
AutowireCapableBeanFactory
BeanPostProcessors
を適用し、postProcessBeforeInitialization
メソッドを呼び出します。返された Bean インスタンスは、元のラッパーの可能性があります。AutowireCapableBeanFactory
の applyBeanPostProcessorsBeforeInitialization
existingBean
- 既存の Bean インスタンス beanName
- Bean の名前、必要に応じて渡される (BeanPostProcessors
にのみ渡されます。指定されたインスタンスを強制的に返すために AutowireCapableBeanFactory.ORIGINAL_INSTANCE_SUFFIX
規則に従うことができます。つまり、プロキシなどはありません。)BeansException
- 後処理が失敗した場合 BeanPostProcessor.postProcessBeforeInitialization(java.lang.Object, java.lang.String)
, AutowireCapableBeanFactory.ORIGINAL_INSTANCE_SUFFIX
public ObjectSE applyBeanPostProcessorsAfterInitialization(ObjectSE existingBean, StringSE beanName) throws BeansException
AutowireCapableBeanFactory
BeanPostProcessors
を適用し、postProcessAfterInitialization
メソッドを呼び出します。返された Bean インスタンスは、元のラッパーの可能性があります。AutowireCapableBeanFactory
の applyBeanPostProcessorsAfterInitialization
existingBean
- 既存の Bean インスタンス beanName
- Bean の名前、必要に応じて渡される (BeanPostProcessors
にのみ渡されます。指定されたインスタンスを強制的に返すために AutowireCapableBeanFactory.ORIGINAL_INSTANCE_SUFFIX
規則に従うことができます。つまり、プロキシなどはありません。)BeansException
- 後処理が失敗した場合 BeanPostProcessor.postProcessAfterInitialization(java.lang.Object, java.lang.String)
, AutowireCapableBeanFactory.ORIGINAL_INSTANCE_SUFFIX
public void destroyBean(ObjectSE existingBean)
AutowireCapableBeanFactory
AutowireCapableBeanFactory.createBean(java.lang.Class<T>)
から取得)を破棄し、DisposableBean
契約と登録済み DestructionAwareBeanPostProcessors
を適用します。破棄中に発生した例外は、このメソッドの呼び出し元に伝播するのではなく、キャッチしてログに記録する必要があります。
AutowireCapableBeanFactory
の destroyBean
existingBean
- 破棄する Bean インスタンス public ObjectSE resolveBeanByName(StringSE name, DependencyDescriptor descriptor)
AutowireCapableBeanFactory
これは事実上、InjectionPoint
引数を持つファクトリメソッドをサポートする BeanFactory.getBean(String, Class)
のバリアントです。
AutowireCapableBeanFactory
の resolveBeanByName
name
- 検索する Bean の名前 descriptor
- リクエストしているインジェクションポイントの依存性記述子 BeanFactory.getBean(String, Class)
@Nullable public ObjectSE resolveDependency(DependencyDescriptor descriptor, @Nullable StringSE requestingBeanName) throws BeansException
AutowireCapableBeanFactory
AutowireCapableBeanFactory
の resolveDependency
descriptor
- 依存関係の記述子 (フィールド / メソッド / コンストラクター)requestingBeanName
- 指定された依存関係を宣言する Bean の名前 null
NoSuchBeanDefinitionException
- 一致する Bean が見つからなかった場合 NoUniqueBeanDefinitionException
- 一致する Bean が複数見つかった場合 BeansException
- 他の理由で依存関係の解決に失敗した場合 AutowireCapableBeanFactory.resolveDependency(DependencyDescriptor, String, Set, TypeConverter)
protected ObjectSE createBean(StringSE beanName, RootBeanDefinition mbd, @Nullable ObjectSE[] args) throws BeanCreationException
AbstractBeanFactory
の createBean
beanName
- Bean の名前 mbd
- Bean のマージされた Bean 定義 args
- コンストラクターまたはファクトリメソッドの呼び出しに使用する明示的な引数 BeanCreationException
- Bean を作成できなかった場合 doCreateBean(java.lang.String, org.springframework.beans.factory.support.RootBeanDefinition, java.lang.Object[])
protected ObjectSE doCreateBean(StringSE beanName, RootBeanDefinition mbd, @Nullable ObjectSE[] args) throws BeanCreationException
postProcessBeforeInstantiation
コールバックをチェックします。デフォルトの Bean インスタンス化、ファクトリメソッドの使用、コンストラクターのオートワイヤーを区別します。
beanName
- Bean の名前 mbd
- Bean のマージされた Bean 定義 args
- コンストラクターまたはファクトリメソッドの呼び出しに使用する明示的な引数 BeanCreationException
- Bean を作成できなかった場合 instantiateBean(java.lang.String, org.springframework.beans.factory.support.RootBeanDefinition)
, instantiateUsingFactoryMethod(java.lang.String, org.springframework.beans.factory.support.RootBeanDefinition, java.lang.Object[])
, autowireConstructor(java.lang.String, org.springframework.beans.factory.support.RootBeanDefinition, java.lang.reflect.Constructor<?>[], java.lang.Object[])
@Nullable protected ClassSE<?> predictBeanType(StringSE beanName, RootBeanDefinition mbd, ClassSE<?>... typesToMatch)
AbstractBeanFactory
AbstractBeanFactory.getType(java.lang.String)
および AbstractBeanFactory.isTypeMatch(java.lang.String, org.springframework.core.ResolvableType)
によって呼び出されます。FactoryBeans は未加工の Bean 型でのみ動作することになっているため、特に FactoryBeans を処理する必要はありません。この実装は、ファクトリメソッドと InstantiationAwareBeanPostProcessors を処理できないという点で単純化されています。標準 Bean の場合、Bean 型のみを正しく予測します。サブクラスでオーバーライドされ、より高度な型検出を適用します。
AbstractBeanFactory
の predictBeanType
beanName
- Bean の名前 mbd
- 型を決定するマージされた Bean 定義 typesToMatch
- 内部型マッチングの目的の場合に一致する型 (また、返された Class
がアプリケーションコードに公開されないことを通知します)null
@Nullable protected ClassSE<?> determineTargetType(StringSE beanName, RootBeanDefinition mbd, ClassSE<?>... typesToMatch)
beanName
- Bean の名前 (エラー処理のため)mbd
- Bean のマージされた Bean 定義 typesToMatch
- 内部型マッチングの目的の場合に一致する型 (また、返された Class
がアプリケーションコードに公開されないことを通知します)null
@Nullable protected ClassSE<?> getTypeForFactoryMethod(StringSE beanName, RootBeanDefinition mbd, ClassSE<?>... typesToMatch)
この実装は、createBean(java.lang.Class<T>)
のさまざまな作成戦略に一致する型を決定します。可能な限り、静的な型チェックを実行して、ターゲット Bean の作成を回避します。
beanName
- Bean の名前 (エラー処理のため)mbd
- Bean のマージされた Bean 定義 typesToMatch
- 内部型マッチングの目的の場合に一致する型 (また、返された Class
がアプリケーションコードに公開されないことを通知します)null
createBean(java.lang.Class<T>)
@Nullable protected ClassSE<?> getTypeForFactoryBean(StringSE beanName, RootBeanDefinition mbd)
getObjectType
メソッドをチェックします。これがまだ型を返さない場合は、FactoryBean の完全な作成がフォールバックとして使用されます(スーパークラスの実装への委譲による)。FactoryBean のショートカットチェックは、シングルトン FactoryBean の場合にのみ適用されます。FactoryBean インスタンス自体がシングルトンとして保持されていない場合、完全に作成されて、公開されたオブジェクトの型をチェックします。
AbstractBeanFactory
の getTypeForFactoryBean
beanName
- Bean の名前 mbd
- Bean のマージされた Bean 定義 null
FactoryBean.getObjectType()
, AbstractBeanFactory.getBean(String)
protected ObjectSE getEarlyBeanReference(StringSE beanName, RootBeanDefinition mbd, ObjectSE bean)
beanName
- Bean の名前 (エラー処理のため)mbd
- Bean のマージされた Bean 定義 bean
- 生の Bean インスタンス protected void applyMergedBeanDefinitionPostProcessors(RootBeanDefinition mbd, ClassSE<?> beanType, StringSE beanName)
postProcessMergedBeanDefinition
メソッドを呼び出します。mbd
- Bean のマージされた Bean 定義 beanType
- 管理対象 Bean インスタンスの実際の型 beanName
- Bean の名前 MergedBeanDefinitionPostProcessor.postProcessMergedBeanDefinition(org.springframework.beans.factory.support.RootBeanDefinition, java.lang.Class<?>, java.lang.String)
@Nullable protected ObjectSE resolveBeforeInstantiation(StringSE beanName, RootBeanDefinition mbd)
beanName
- Bean の名前 mbd
- Bean の Bean 定義 null
@Nullable protected ObjectSE applyBeanPostProcessorsBeforeInstantiation(ClassSE<?> beanClass, StringSE beanName)
postProcessBeforeInstantiation
メソッドを呼び出します。 返されたオブジェクトは、実際にターゲット Bean をインスタンス化する代わりに、Bean として使用されます。ポストプロセッサーからの null
戻り値により、ターゲット Bean がインスタンス化されます。
beanClass
- インスタンス化される Bean のクラス beanName
- Bean の名前 null
のデフォルトインスタンスの代わりに使用する Bean オブジェクト InstantiationAwareBeanPostProcessor.postProcessBeforeInstantiation(java.lang.Class<?>, java.lang.String)
protected BeanWrapper createBeanInstance(StringSE beanName, RootBeanDefinition mbd, @Nullable ObjectSE[] args)
beanName
- Bean の名前 mbd
- Bean の Bean 定義 args
- コンストラクターまたはファクトリメソッドの呼び出しに使用する明示的な引数 obtainFromSupplier(java.util.function.Supplier<?>, java.lang.String)
, instantiateUsingFactoryMethod(java.lang.String, org.springframework.beans.factory.support.RootBeanDefinition, java.lang.Object[])
, autowireConstructor(java.lang.String, org.springframework.beans.factory.support.RootBeanDefinition, java.lang.reflect.Constructor<?>[], java.lang.Object[])
, instantiateBean(java.lang.String, org.springframework.beans.factory.support.RootBeanDefinition)
protected BeanWrapper obtainFromSupplier(SupplierSE<?> instanceSupplier, StringSE beanName)
instanceSupplier
- 構成されたサプライヤー beanName
- 対応する Bean 名 getObjectForBeanInstance(java.lang.Object, java.lang.String, java.lang.String, org.springframework.beans.factory.support.RootBeanDefinition)
protected ObjectSE getObjectForBeanInstance(ObjectSE beanInstance, StringSE name, StringSE beanName, @Nullable RootBeanDefinition mbd)
Supplier
SE コールバック中にプログラムで取得される追加の Bean に依存するものとして暗黙的に登録するためにオーバーライドされます。AbstractBeanFactory
の getObjectForBeanInstance
beanInstance
- 共有 Bean インスタンス name
- ファクトリ逆参照プレフィックスを含む可能性がある名前 beanName
- 正規の Bean 名 mbd
- マージされた Bean 定義 obtainFromSupplier(java.util.function.Supplier<?>, java.lang.String)
@Nullable protected ConstructorSE<?>[] determineConstructorsFromBeanPostProcessors(@Nullable ClassSE<?> beanClass, StringSE beanName) throws BeansException
SmartInstantiationAwareBeanPostProcessors
をチェックして、指定された Bean に使用する候補コンストラクターを決定します。beanClass
- Bean の生のクラス beanName
- Bean の名前 null
BeansException
- エラーの場合 SmartInstantiationAwareBeanPostProcessor.determineCandidateConstructors(java.lang.Class<?>, java.lang.String)
protected BeanWrapper instantiateBean(StringSE beanName, RootBeanDefinition mbd)
beanName
- Bean の名前 mbd
- Bean の Bean 定義 protected BeanWrapper instantiateUsingFactoryMethod(StringSE beanName, RootBeanDefinition mbd, @Nullable ObjectSE[] explicitArgs)
beanName
- Bean の名前 mbd
- Bean の Bean 定義 explicitArgs
- getBean メソッドを介してプログラム的に渡される引数値、または存在しない場合は null
(-> Bean 定義のコンストラクター引数値を使用)AbstractBeanFactory.getBean(String, Object[])
protected BeanWrapper autowireConstructor(StringSE beanName, RootBeanDefinition mbd, @Nullable ConstructorSE<?>[] ctors, @Nullable ObjectSE[] explicitArgs)
これはコンストラクターインジェクションに対応します。このモードでは、Spring Bean ファクトリは、コンストラクターベースの依存関係の解決を期待するコンポーネントをホストできます。
beanName
- Bean の名前 mbd
- Bean の Bean 定義 ctors
- 選択された候補コンストラクター explicitArgs
- getBean メソッドを介してプログラム的に渡される引数値、または存在しない場合は null
(-> Bean 定義のコンストラクター引数値を使用)protected void populateBean(StringSE beanName, RootBeanDefinition mbd, @Nullable BeanWrapper bw)
beanName
- Bean の名前 mbd
- Bean の Bean 定義 bw
- BeanWrapper と Bean インスタンス protected void autowireByName(StringSE beanName, AbstractBeanDefinition mbd, BeanWrapper bw, MutablePropertyValues pvs)
beanName
- 接続している Bean の名前。メッセージのデバッグに役立ちます。関数には使用されません。mbd
- オートワイヤーを通じて更新する Bean 定義 bw
- Bean に関する情報を取得できる BeanWrapperpvs
- ワイヤードオブジェクトを登録する PropertyValuesprotected void autowireByType(StringSE beanName, AbstractBeanDefinition mbd, BeanWrapper bw, MutablePropertyValues pvs)
これは PicoContainer のデフォルトに似ており、Bean ファクトリにはプロパティ型の Bean が 1 つだけ存在する必要があります。これにより、Bean ファクトリは小さな名前空間の構成が簡単になりますが、より大きなアプリケーションの標準の Spring の動作と同じようには機能しません。
beanName
- 型ごとにオートワイヤーする Bean の名前 mbd
- オートワイヤーを通じて更新するためのマージされた Bean 定義 bw
- Bean に関する情報を取得できる BeanWrapperpvs
- ワイヤードオブジェクトを登録する PropertyValuesprotected StringSE[] unsatisfiedNonSimpleProperties(AbstractBeanDefinition mbd, BeanWrapper bw)
mbd
- Bean が作成されたマージ済み Bean 定義 bw
- BeanWrapper Bean は BeanUtils.isSimpleProperty(java.lang.Class<?>)
protected PropertyDescriptorSE[] filterPropertyDescriptorsForDependencyCheck(BeanWrapper bw, boolean cache)
bw
- BeanWrapper Bean は cache
- 指定された Bean クラスのフィルタリングされた PropertyDescriptors をキャッシュするかどうか isExcludedFromDependencyCheck(java.beans.PropertyDescriptor)
, filterPropertyDescriptorsForDependencyCheck(org.springframework.beans.BeanWrapper)
protected PropertyDescriptorSE[] filterPropertyDescriptorsForDependencyCheck(BeanWrapper bw)
bw
- BeanWrapper Bean は isExcludedFromDependencyCheck(java.beans.PropertyDescriptor)
protected boolean isExcludedFromDependencyCheck(PropertyDescriptorSE pd)
この実装は、CGLIB によって定義されたプロパティと、無視された依存関係型と一致する型のプロパティ、または無視された依存関係インターフェースによって定義されたプロパティを除外します。
pd
- Bean プロパティの PropertyDescriptorignoreDependencyType(Class)
, ignoreDependencyInterface(Class)
protected void checkDependencies(StringSE beanName, AbstractBeanDefinition mbd, PropertyDescriptorSE[] pds, @Nullable PropertyValues pvs) throws UnsatisfiedDependencyException
beanName
- Bean の名前 mbd
- Bean が作成されたマージ済み Bean 定義 pds
- ターゲット Bean に関連するプロパティ記述子 pvs
- Bean に適用されるプロパティ値 UnsatisfiedDependencyException
isExcludedFromDependencyCheck(java.beans.PropertyDescriptor)
protected void applyPropertyValues(StringSE beanName, BeanDefinition mbd, BeanWrapper bw, PropertyValues pvs)
beanName
- より良い例外情報のために渡された Bean 名 mbd
- マージされた Bean 定義 bw
- ターゲットオブジェクトをラップする BeanWrapperpvs
- 新しいプロパティ値 protected ObjectSE initializeBean(StringSE beanName, ObjectSE bean, @Nullable RootBeanDefinition mbd)
従来から定義されている Bean の場合は createBean(java.lang.Class<T>)
から、既存の Bean インスタンスの場合は initializeBean(java.lang.Object, java.lang.String)
から呼び出されます。
beanName
- ファクトリでの Bean の名前 (デバッグ用)bean
- 初期化する必要がある新しい Bean インスタンス mbd
- Bean が作成された Bean 定義 (既存の Bean インスタンスが指定されている場合は、null
にすることもできます)BeanNameAware
, BeanClassLoaderAware
, BeanFactoryAware
, applyBeanPostProcessorsBeforeInitialization(java.lang.Object, java.lang.String)
, invokeInitMethods(java.lang.String, java.lang.Object, org.springframework.beans.factory.support.RootBeanDefinition)
, applyBeanPostProcessorsAfterInitialization(java.lang.Object, java.lang.String)
protected void invokeInitMethods(StringSE beanName, ObjectSE bean, @Nullable RootBeanDefinition mbd) throws ThrowableSE
beanName
- ファクトリでの Bean の名前 (デバッグ用)bean
- 初期化する必要がある新しい Bean インスタンス mbd
- Bean が作成されたマージ済み Bean 定義 (既存の Bean インスタンスが指定されている場合は、null
にすることもできます)ThrowableSE
- init メソッドまたは呼び出しプロセスによってスローされた場合 invokeCustomInitMethod(java.lang.String, java.lang.Object, org.springframework.beans.factory.support.RootBeanDefinition)
protected void invokeCustomInitMethod(StringSE beanName, ObjectSE bean, RootBeanDefinition mbd) throws ThrowableSE
引数付きの init メソッドのカスタム解決のためにサブクラスでオーバーライドできます。
protected ObjectSE postProcessObjectFromFactoryBean(ObjectSE object, StringSE beanName)
postProcessAfterInitialization
コールバックを適用し、FactoryBeans から取得したオブジェクトを後処理する(たとえば、自動プロキシする)機会を与えます。FactoryBeanRegistrySupport
の postProcessObjectFromFactoryBean
object
- FactoryBean から取得したオブジェクト。beanName
- Bean の名前 applyBeanPostProcessorsAfterInitialization(java.lang.Object, java.lang.String)
protected void removeSingleton(StringSE beanName)
FactoryBeanRegistrySupport
の removeSingleton
beanName
- Bean の名前 DefaultSingletonBeanRegistry.getSingletonMutex()
protected void clearSingletonCache()
FactoryBeanRegistrySupport
の clearSingletonCache