public abstract class AbstractBeanFactory extends FactoryBeanRegistrySupport implements ConfigurableBeanFactory
ConfigurableBeanFactory
SPI のすべての機能を提供する、BeanFactory
実装の抽象基本クラス。リスト可能な Bean ファクトリを想定していません。一部のバックエンドリソースから Bean 定義を取得する Bean ファクトリ実装の基本クラスとしても使用できます(Bean 定義へのアクセスは負荷の高い操作です)。 このクラスは、(その基本クラス DefaultSingletonBeanRegistry
、シングルトン / プロトタイプ決定、FactoryBean
処理、エイリアス、子 Bean 定義の Bean 定義のマージ、Bean 破棄(DisposableBean
インターフェース、カスタム破棄メソッド)を通じて、シングルトンキャッシュを提供します。さらに、Bean を管理できます。HierarchicalBeanFactory
インターフェースの実装によるファクトリ階層(Bean が不明の場合は親に委譲)。
サブクラスによって実装される主なテンプレートメソッドは getBeanDefinition(java.lang.String)
および createBean(java.lang.String, org.springframework.beans.factory.support.RootBeanDefinition, java.lang.Object[])
であり、それぞれ特定の Bean 名の Bean 定義を取得し、特定の Bean 定義の Bean インスタンスを作成します。これらの操作のデフォルトの実装は、DefaultListableBeanFactory
および AbstractAutowireCapableBeanFactory
にあります。
getBeanDefinition(java.lang.String)
, createBean(java.lang.String, org.springframework.beans.factory.support.RootBeanDefinition, java.lang.Object[])
, AbstractAutowireCapableBeanFactory.createBean(java.lang.Class<T>)
, DefaultListableBeanFactory.getBeanDefinition(java.lang.String)
logger, NULL_OBJECT
SCOPE_PROTOTYPE, SCOPE_SINGLETON
FACTORY_BEAN_PREFIX
コンストラクターと説明 |
---|
AbstractBeanFactory() 新しい AbstractBeanFactory を作成します。 |
AbstractBeanFactory(BeanFactory parentBeanFactory) 指定された親を持つ新しい AbstractBeanFactory を作成します。 |
修飾子と型 | メソッドと説明 |
---|---|
void | addBeanPostProcessor(BeanPostProcessor beanPostProcessor) このファクトリによって作成された Bean に適用される新しい BeanPostProcessor を追加します。 |
void | addEmbeddedValueResolver(StringValueResolver valueResolver) アノテーション属性などの埋め込み値の文字列リゾルバーを追加します。 |
void | addPropertyEditorRegistrar(PropertyEditorRegistrar registrar) すべての Bean 作成プロセスに適用される PropertyEditorRegistrar を追加します。 |
protected void | afterPrototypeCreation(java.lang.String beanName) プロトタイプ作成後のコールバック。 |
protected void | beforePrototypeCreation(java.lang.String beanName) プロトタイプ作成前のコールバック。 |
protected void | checkMergedBeanDefinition(RootBeanDefinition mbd, java.lang.String beanName, java.lang.Object[] args) マージされた Bean 定義を確認し、検証例外を潜在的にスローします。 |
protected void | cleanupAfterBeanCreationFailure(java.lang.String beanName) Bean の作成に失敗した後、キャッシュされたメタデータの適切なクリーンアップを実行します。 |
protected void | clearMergedBeanDefinition(java.lang.String beanName) 指定された Bean のマージされた Bean 定義を削除し、次のアクセスで再作成します。 |
void | clearMetadataCache() マージされた Bean 定義キャッシュをクリアして、完全なメタデータキャッシュにまだ適格と見なされていない Bean のエントリを削除します。 |
boolean | containsBean(java.lang.String name) この Bean ファクトリには、指定された名前の Bean 定義または外部登録されたシングルトンインスタンスが含まれているか判定します。 |
protected abstract boolean | containsBeanDefinition(java.lang.String beanName) この Bean ファクトリに、指定された名前の Bean 定義が含まれているかどうかを確認します。 |
boolean | containsLocalBean(java.lang.String name) 祖先コンテキストで定義された Bean を無視して、ローカル Bean ファクトリに、指定された名前の Bean が含まれているかどうかを返します。 |
void | copyConfigurationFrom(ConfigurableBeanFactory otherFactory) 指定された他のファクトリから関連するすべての構成をコピーします。 |
void | copyRegisteredEditorsTo(PropertyEditorRegistry registry) この BeanFactory に登録されているカスタムエディターを使用して、指定された PropertyEditorRegistry を初期化します。 |
protected abstract java.lang.Object | createBean(java.lang.String beanName, RootBeanDefinition mbd, java.lang.Object[] args) 指定された Bean 定義(および引数)の Bean インスタンスを作成します。 |
void | destroyBean(java.lang.String beanName, java.lang.Object beanInstance) 指定された Bean インスタンス(通常はこのファクトリから取得されたプロトタイプインスタンス)を、その Bean 定義に従って破棄します。 |
protected void | destroyBean(java.lang.String beanName, java.lang.Object bean, RootBeanDefinition mbd) 指定された Bean 定義に従って、指定された Bean インスタンス(通常、このファクトリから取得されたプロトタイプインスタンス)を破棄します。 |
void | destroyScopedBean(java.lang.String beanName) 現在のターゲットスコープに指定されたスコープ付き Bean がある場合はそれを破棄します。 |
protected <T> T | doGetBean(java.lang.String name, java.lang.Class<T> requiredType, java.lang.Object[] args, boolean typeCheckOnly) 指定された Bean のインスタンス(共有または独立)を返します。 |
protected java.lang.Object | evaluateBeanDefinitionString(java.lang.String value, BeanDefinition beanDefinition) Bean 定義に含まれている特定のストリングを評価し、潜在的にそれを式として解決します。 |
java.security.AccessControlContext | getAccessControlContext() アクセス制御コンテキストの作成を SecurityContextProvider に委譲します。 |
java.lang.String[] | getAliases(java.lang.String name) 定義されている場合、指定された名前のエイリアスを返します。 |
java.lang.Object | getBean(java.lang.String name) 指定された Bean のインスタンス(共有または独立)を返します。 |
<T> T | getBean(java.lang.String name, java.lang.Class<T> requiredType) 指定された Bean のインスタンス(共有または独立)を返します。 |
<T> T | getBean(java.lang.String name, java.lang.Class<T> requiredType, java.lang.Object... args) 指定された Bean のインスタンス(共有または独立)を返します。 |
java.lang.Object | getBean(java.lang.String name, java.lang.Object... args) 指定された Bean のインスタンス(共有または独立)を返します。 |
java.lang.ClassLoader | getBeanClassLoader() Bean クラスをロードするためにこのファクトリのクラスローダーを返します。 |
protected abstract BeanDefinition | getBeanDefinition(java.lang.String beanName) 指定された Bean 名の Bean 定義を返します。 |
BeanExpressionResolver | getBeanExpressionResolver() Bean 定義値の式の解決戦略を返します。 |
int | getBeanPostProcessorCount() 登録されている BeanPostProcessors の現在の数があれば返します。 |
java.util.List<BeanPostProcessor> | getBeanPostProcessors() このファクトリで作成された Bean に適用される BeanPostProcessors のリストを返します。 |
ConversionService | getConversionService() 関連する ConversionService があれば、それを返します。 |
java.util.Map<java.lang.Class<?>,java.lang.Class<? extends java.beans.PropertyEditor>> | getCustomEditors() キーをクラス、値を PropertyEditor クラスとして、カスタムエディターのマップを返します。 |
protected TypeConverter | getCustomTypeConverter() 使用するカスタム TypeConverter を返します(ある場合)。 |
BeanDefinition | getMergedBeanDefinition(java.lang.String name) 指定された Bean 名の「マージされた」BeanDefinition を返します。必要に応じて、子 Bean 定義をその親とマージします。 |
protected RootBeanDefinition | getMergedBeanDefinition(java.lang.String beanName, BeanDefinition bd) 指定された Bean の定義が子 Bean 定義である場合、親とマージすることにより、指定された最上位 Bean の RootBeanDefinition を返します。 |
protected RootBeanDefinition | getMergedBeanDefinition(java.lang.String beanName, BeanDefinition bd, BeanDefinition containingBd) 指定された Bean の定義が子 Bean 定義である場合、親とマージすることにより、指定された Bean の RootBeanDefinition を返します。 |
protected RootBeanDefinition | getMergedLocalBeanDefinition(java.lang.String beanName) 指定された Bean が子 Bean 定義に対応する場合、親 Bean 定義をトラバースして、マージされた RootBeanDefinition を返します。 |
protected java.lang.Object | getObjectForBeanInstance(java.lang.Object beanInstance, java.lang.String name, java.lang.String beanName, RootBeanDefinition mbd) 指定された Bean インスタンスのオブジェクト、Bean インスタンス自体または FactoryBean の場合は作成されたオブジェクトを取得します。 |
BeanFactory | getParentBeanFactory() 親 Bean ファクトリ、または存在しない場合は null を返します。 |
java.util.Set<PropertyEditorRegistrar> | getPropertyEditorRegistrars() PropertyEditorRegistrars のセットを返します。 |
Scope | getRegisteredScope(java.lang.String scopeName) 指定されたスコープ名のスコープ実装があれば、それを返します。 |
java.lang.String[] | getRegisteredScopeNames() 現在登録されているすべてのスコープの名前を返します。 |
java.lang.ClassLoader | getTempClassLoader() 一時的な ClassLoader を返し、型マッチングの目的で使用します(ある場合)。 |
java.lang.Class<?> | getType(java.lang.String name) 指定された名前の Bean の型を判別します。 |
TypeConverter | getTypeConverter() この BeanFactory で使用されている型コンバーターを入手します。 |
protected java.lang.Class<?> | getTypeForFactoryBean(java.lang.String beanName, RootBeanDefinition mbd) 指定された FactoryBean 定義の Bean 型を可能な限り決定します。 |
protected boolean | hasBeanCreationStarted() このファクトリの Bean 作成フェーズがすでに開始されているかどうかを確認します。 |
protected boolean | hasDestructionAwareBeanPostProcessors() このファクトリが、シャットダウン時にシングルトン Bean に適用される DestructionAwareBeanPostProcessor を保持しているかどうかを返します。 |
boolean | hasEmbeddedValueResolver() 埋め込み値リゾルバーがこの Bean ファクトリに登録されており、 ConfigurableBeanFactory.resolveEmbeddedValue(String) を通じて適用されるかどうかを判別します。 |
protected boolean | hasInstantiationAwareBeanPostProcessors() このファクトリが、シャットダウン時にシングルトン Bean に適用される InstantiationAwareBeanPostProcessor を保持しているかどうかを返します。 |
protected void | initBeanWrapper(BeanWrapper bw) このファクトリに登録されているカスタムエディターを使用して、指定された BeanWrapper を初期化します。 |
boolean | isActuallyInCreation(java.lang.String beanName) |
protected boolean | isBeanEligibleForMetadataCaching(java.lang.String beanName) 指定された Bean が、その Bean 定義メタデータをキャッシュに入れる資格があるかどうかを判別します。 |
boolean | isBeanNameInUse(java.lang.String beanName) 指定された Bean 名がこのファクトリ内ですでに使用されているかどうかを確認します。 |
boolean | isCacheBeanMetadata() 指定された Bean 定義(解決された方法)や解決された Bean クラスなどの Bean メタデータをキャッシュするかどうかを返します。 |
boolean | isFactoryBean(java.lang.String name) 指定された名前の Bean が FactoryBean であるかどうかを判別します。 |
protected boolean | isFactoryBean(java.lang.String beanName, RootBeanDefinition mbd) 指定された Bean が FactoryBean として定義されているかどうかを確認します。 |
boolean | isPrototype(java.lang.String name) この Bean はプロトタイプですか? つまり、 BeanFactory.getBean(java.lang.String) は常に独立したインスタンスを返しますか? |
protected boolean | isPrototypeCurrentlyInCreation(java.lang.String beanName) 指定されたプロトタイプ Bean が現在作成中(現在のスレッド内)かどうかを返します。 |
boolean | isSingleton(java.lang.String name) この Bean は共有シングルトンですか? つまり、 BeanFactory.getBean(java.lang.String) は常に同じインスタンスを返しますか? |
boolean | isTypeMatch(java.lang.String name, java.lang.Class<?> typeToMatch) 指定された名前の Bean が指定された型と一致するかどうかを確認します。 |
boolean | isTypeMatch(java.lang.String name, ResolvableType typeToMatch) 指定された名前の Bean が指定された型と一致するかどうかを確認します。 |
protected void | markBeanAsCreated(java.lang.String beanName) 指定した Bean をすでに作成済み(または作成中)としてマークします。 |
protected java.lang.String | originalBeanName(java.lang.String name) ローカルで定義されたエイリアスを正規名に解決して、元の Bean 名を決定します。 |
protected java.lang.Class<?> | predictBeanType(java.lang.String beanName, RootBeanDefinition mbd, java.lang.Class<?>... typesToMatch) 指定された Bean の(処理された Bean インスタンスの)最終的な Bean 型を予測します。 |
void | registerCustomEditor(java.lang.Class<?> requiredType, java.lang.Class<? extends java.beans.PropertyEditor> propertyEditorClass) 指定された型のすべてのプロパティに対して、指定されたカスタムプロパティエディターを登録します。 |
protected void | registerCustomEditors(PropertyEditorRegistry registry) この BeanFactory に登録されているカスタムエディターを使用して、指定された PropertyEditorRegistry を初期化します。 |
protected void | registerDisposableBeanIfNecessary(java.lang.String beanName, java.lang.Object bean, RootBeanDefinition mbd) 指定された Bean をこのファクトリの使い捨て Bean のリストに追加し、その DisposableBean インターフェースおよび / またはファクトリシャットダウン時に呼び出される指定された destroy メソッドを登録します(該当する場合)。 |
void | registerScope(java.lang.String scopeName, Scope scope) 指定されたスコープの実装に裏付けられた、指定されたスコープを登録します。 |
protected boolean | removeSingletonIfCreatedForTypeCheckOnly(java.lang.String beanName) 指定された Bean 名のシングルトンインスタンス(存在する場合)を削除します。ただし、型チェック以外の目的で使用されていない場合のみです。 |
protected boolean | requiresDestruction(java.lang.Object bean, RootBeanDefinition mbd) シャットダウン時に指定の Bean を破棄する必要があるかどうかを判断します。 |
protected java.lang.Class<?> | resolveBeanClass(RootBeanDefinition mbd, java.lang.String beanName, java.lang.Class<?>... typesToMatch) 指定された Bean 定義の Bean クラスを解決し、Bean クラス名をクラス参照に解決し(必要に応じて)、さらに使用するために Bean 定義に解決されたクラスを保管します。 |
java.lang.String | resolveEmbeddedValue(java.lang.String value) 指定された埋め込み値を解決します。 |
void | setBeanClassLoader(java.lang.ClassLoader beanClassLoader) Bean クラスのロードに使用するクラスローダーを設定します。 |
void | setBeanExpressionResolver(BeanExpressionResolver resolver) Bean 定義値の式の解決戦略を指定します。 |
void | setCacheBeanMetadata(boolean cacheBeanMetadata) 指定された Bean 定義(マージされた方法)や解決された Bean クラスなどの Bean メタデータをキャッシュするかどうかを設定します。 |
void | setConversionService(ConversionService conversionService) JavaBeans PropertyEditors の代わりに、プロパティ値の変換に使用する Spring 3.0 ConversionService を指定します。 |
void | setParentBeanFactory(BeanFactory parentBeanFactory) この Bean ファクトリの親を設定します。 |
void | setSecurityContextProvider(SecurityContextProvider securityProvider) この Bean ファクトリのセキュリティコンテキストプロバイダーを設定します。 |
void | setTempClassLoader(java.lang.ClassLoader tempClassLoader) 型マッチングの目的で使用する一時的な ClassLoader を指定します。 |
void | setTypeConverter(TypeConverter typeConverter) この BeanFactory が Bean プロパティ値、コンストラクター引数値などを変換するために使用するカスタム型コンバーターを設定します。 |
protected java.lang.String | transformedBeanName(java.lang.String name) Bean 名を返し、必要に応じてファクトリ逆参照プレフィックスを取り除き、エイリアスを正規名に解決します。 |
clearSingletonCache, getCachedObjectForFactoryBean, getFactoryBean, getObjectFromFactoryBean, getTypeForFactoryBean, postProcessObjectFromFactoryBean, removeSingleton
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
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
destroySingletons, getDependenciesForBean, getDependentBeans, isCurrentlyInCreation, registerAlias, registerDependentBean, resolveAliases, setCurrentlyInCreation
getBean, getBean
containsSingleton, getSingleton, getSingletonCount, getSingletonMutex, getSingletonNames, registerSingleton
public AbstractBeanFactory()
public AbstractBeanFactory(BeanFactory parentBeanFactory)
parentBeanFactory
- 親 Bean ファクトリ、または存在しない場合は null
getBean(java.lang.String)
public java.lang.Object getBean(java.lang.String name) throws BeansException
BeanFactory
この方法では、Spring BeanFactory をシングルトンまたはプロトタイプの設計パターンの代わりとして使用できます。シングルトン Bean の場合、呼び出し元は返されたオブジェクトへの参照を保持できます。
エイリアスを対応する正規の Bean 名に変換します。このファクトリインスタンスで Bean が見つからないかどうかを親ファクトリに確認します。
BeanFactory
の getBean
name
- 取得する Bean の名前 NoSuchBeanDefinitionException
- 指定された名前の Bean 定義がない場合 BeansException
- Bean を取得できなかった場合 public <T> T getBean(java.lang.String name, java.lang.Class<T> requiredType) throws BeansException
BeanFactory
BeanFactory.getBean(String)
と同じように動作しますが、Bean が必要な型でない場合は BeanNotOfRequiredTypeException をスローすることにより、型安全の基準を提供します。これは、BeanFactory.getBean(String)
で発生する可能性があるように、結果を正しくキャストすると ClassCastException がスローされないことを意味します。
エイリアスを対応する正規の Bean 名に変換します。このファクトリインスタンスで Bean が見つからないかどうかを親ファクトリに確認します。
BeanFactory
の getBean
name
- 取得する Bean の名前 requiredType
- 型 Bean は一致する必要があります。実際のクラスのインターフェースまたはスーパークラス、または一致する場合は null
を指定できます。例: 値が Object.class
の場合、このメソッドは返されたインスタンスのクラスが何であっても成功します。NoSuchBeanDefinitionException
- そのような Bean 定義がない場合 BeanNotOfRequiredTypeException
- Bean が必要な型でない場合 BeansException
- Bean を作成できなかった場合 public java.lang.Object getBean(java.lang.String name, java.lang.Object... args) throws BeansException
BeanFactory
Bean 定義で指定されたデフォルト引数(存在する場合)をオーバーライドして、明示的なコンストラクター引数 / ファクトリメソッド引数を指定できます。
BeanFactory
の getBean
name
- 取得する Bean の名前 args
- 明示的な引数を使用して Bean インスタンスを作成するときに使用する引数 (既存のインスタンスを取得するのではなく、新しいインスタンスを作成するときにのみ適用されます)NoSuchBeanDefinitionException
- そのような Bean 定義がない場合 BeanDefinitionStoreException
- 引数は指定されているが、影響を受ける Bean がプロトタイプではない場合 BeansException
- Bean を作成できなかった場合 public <T> T getBean(java.lang.String name, java.lang.Class<T> requiredType, java.lang.Object... args) throws BeansException
name
- 取得する Bean の名前 requiredType
- 取得する Bean の必要な型 args
- 明示的な引数を使用して Bean インスタンスを作成するときに使用する引数 (既存のインスタンスを取得するのではなく、新しいインスタンスを作成するときにのみ適用されます)BeansException
- Bean を作成できなかった場合 protected <T> T doGetBean(java.lang.String name, java.lang.Class<T> requiredType, java.lang.Object[] args, boolean typeCheckOnly) throws BeansException
name
- 取得する Bean の名前 requiredType
- 取得する Bean の必要な型 args
- 明示的な引数を使用して Bean インスタンスを作成するときに使用する引数 (既存のインスタンスを取得するのではなく、新しいインスタンスを作成するときにのみ適用されます)typeCheckOnly
- インスタンスが実際の使用のためではなく、型チェックのために取得されるかどうか BeansException
- Bean を作成できなかった場合 public boolean containsBean(java.lang.String name)
BeanFactory
指定された名前がエイリアスの場合、対応する正規の Bean 名に変換されます。
このファクトリが階層的である場合、このファクトリインスタンスで Bean が見つからないかどうかを親ファクトリに問い合わせます。
指定された名前に一致する Bean 定義またはシングルトンインスタンスが見つかった場合、このメソッドは、名前付き Bean 定義がスコープ内で具体的または抽象的、遅延または先行であるかどうかにかかわらず、true
を返します。このメソッドからの true
戻り値は、必ずしも BeanFactory.getBean(java.lang.String)
が同じ名前のインスタンスを取得できることを示しているわけではないことに注意してください。
BeanFactory
の containsBean
name
- 照会する Bean の名前 public boolean isSingleton(java.lang.String name) throws NoSuchBeanDefinitionException
BeanFactory
BeanFactory.getBean(java.lang.String)
は常に同じインスタンスを返しますか? メモ: false
を返すこのメソッドは、独立したインスタンスを明確に示していません。これは、スコープが設定された Bean にも対応している可能性がある非シングルトンインスタンスを示します。BeanFactory.isPrototype(java.lang.String)
操作を使用して、独立したインスタンスを明示的にチェックします。
エイリアスを対応する正規の Bean 名に変換します。このファクトリインスタンスで Bean が見つからないかどうかを親ファクトリに確認します。
BeanFactory
の isSingleton
name
- 照会する Bean の名前 NoSuchBeanDefinitionException
- 指定された名前の Bean がない場合 BeanFactory.getBean(java.lang.String)
, BeanFactory.isPrototype(java.lang.String)
public boolean isPrototype(java.lang.String name) throws NoSuchBeanDefinitionException
BeanFactory
BeanFactory.getBean(java.lang.String)
は常に独立したインスタンスを返しますか? メモ: false
を返すこのメソッドは、シングルトンオブジェクトを明確に示していません。これは独立したインスタンスを示し、スコープ付き Bean にも対応する場合があります。BeanFactory.isSingleton(java.lang.String)
操作を使用して、共有シングルトンインスタンスを明示的に確認します。
エイリアスを対応する正規の Bean 名に変換します。このファクトリインスタンスで Bean が見つからないかどうかを親ファクトリに確認します。
BeanFactory
の isPrototype
name
- 照会する Bean の名前 NoSuchBeanDefinitionException
- 指定された名前の Bean がない場合 BeanFactory.getBean(java.lang.String)
, BeanFactory.isSingleton(java.lang.String)
public boolean isTypeMatch(java.lang.String name, ResolvableType typeToMatch) throws NoSuchBeanDefinitionException
BeanFactory
BeanFactory.getBean(java.lang.String)
呼び出しが、指定されたターゲット型に割り当て可能なオブジェクトを返すかどうかを確認します。エイリアスを対応する正規の Bean 名に変換します。このファクトリインスタンスで Bean が見つからないかどうかを親ファクトリに確認します。
BeanFactory
の isTypeMatch
name
- 照会する Bean の名前 typeToMatch
- 照合する型 (ResolvableType
として)true
、一致しないかまだ判別できない場合は false
NoSuchBeanDefinitionException
- 指定された名前の Bean がない場合 BeanFactory.getBean(java.lang.String)
, BeanFactory.getType(java.lang.String)
public boolean isTypeMatch(java.lang.String name, java.lang.Class<?> typeToMatch) throws NoSuchBeanDefinitionException
BeanFactory
BeanFactory.getBean(java.lang.String)
呼び出しが、指定されたターゲット型に割り当て可能なオブジェクトを返すかどうかを確認します。エイリアスを対応する正規の Bean 名に変換します。このファクトリインスタンスで Bean が見つからないかどうかを親ファクトリに確認します。
BeanFactory
の isTypeMatch
name
- 照会する Bean の名前 typeToMatch
- 照合する型 (Class
として)true
、一致しないかまだ判別できない場合は false
NoSuchBeanDefinitionException
- 指定された名前の Bean がない場合 BeanFactory.getBean(java.lang.String)
, BeanFactory.getType(java.lang.String)
public java.lang.Class<?> getType(java.lang.String name) throws NoSuchBeanDefinitionException
BeanFactory
BeanFactory.getBean(java.lang.String)
が返すオブジェクトの型を決定します。FactoryBean
の場合、FactoryBean.getObjectType()
で公開されている、FactoryBean が作成するオブジェクトの型を返します。
エイリアスを対応する正規の Bean 名に変換します。このファクトリインスタンスで Bean が見つからないかどうかを親ファクトリに確認します。
BeanFactory
の getType
name
- 照会する Bean の名前 null
NoSuchBeanDefinitionException
- 指定された名前の Bean がない場合 BeanFactory.getBean(java.lang.String)
, BeanFactory.isTypeMatch(java.lang.String, org.springframework.core.ResolvableType)
public java.lang.String[] getAliases(java.lang.String name)
AliasRegistry
BeanFactory
の getAliases
AliasRegistry
の getAliases
SimpleAliasRegistry
の getAliases
name
- エイリアスをチェックする名前 BeanFactory.getBean(java.lang.String)
public BeanFactory getParentBeanFactory()
HierarchicalBeanFactory
null
を返します。HierarchicalBeanFactory
の getParentBeanFactory
public boolean containsLocalBean(java.lang.String name)
HierarchicalBeanFactory
これは containsBean
の代替であり、祖先の Bean ファクトリから指定された名前の Bean を無視します。
HierarchicalBeanFactory
の containsLocalBean
name
- 照会する Bean の名前 BeanFactory.containsBean(java.lang.String)
public void setParentBeanFactory(BeanFactory parentBeanFactory)
ConfigurableBeanFactory
親は変更できないことに注意してください。ファクトリのインスタンス化時に使用できない場合にのみ、コンストラクターの外部で設定する必要があります。
ConfigurableBeanFactory
の setParentBeanFactory
parentBeanFactory
- 親 BeanFactoryHierarchicalBeanFactory.getParentBeanFactory()
public void setBeanClassLoader(java.lang.ClassLoader beanClassLoader)
ConfigurableBeanFactory
このクラスローダーは、解決された Bean クラスをまだ運んでいない Bean 定義にのみ適用されることに注意してください。これは、デフォルトの Spring 2.0 の場合です。Bean 定義は Bean クラス名のみを伝送し、ファクトリが Bean 定義を処理すると解決されます。
ConfigurableBeanFactory
の setBeanClassLoader
beanClassLoader
- 使用するクラスローダー、またはデフォルトのクラスローダーを提案する null
public java.lang.ClassLoader getBeanClassLoader()
ConfigurableBeanFactory
ConfigurableBeanFactory
の getBeanClassLoader
public void setTempClassLoader(java.lang.ClassLoader tempClassLoader)
ConfigurableBeanFactory
一時的な ClassLoader は、実際の Bean クラスが可能な限り遅延して読み込まれるようにするために、通常、 読み込み時のウィービングが関係する場合に指定されます。BeanFactory がブートストラップフェーズを完了すると、一時的なローダーは削除されます。
ConfigurableBeanFactory
の setTempClassLoader
public java.lang.ClassLoader getTempClassLoader()
ConfigurableBeanFactory
ConfigurableBeanFactory
の getTempClassLoader
public void setCacheBeanMetadata(boolean cacheBeanMetadata)
ConfigurableBeanFactory
このフラグをオフにすると、Bean 定義オブジェクト、特に Bean クラスのホットリフレッシュが有効になります。このフラグがオフの場合、Bean インスタンスを作成すると、Bean クラスローダーに新たに解決されたクラスのクエリが再実行されます。
ConfigurableBeanFactory
の setCacheBeanMetadata
public boolean isCacheBeanMetadata()
ConfigurableBeanFactory
ConfigurableBeanFactory
の isCacheBeanMetadata
public void setBeanExpressionResolver(BeanExpressionResolver resolver)
ConfigurableBeanFactory
BeanFactory では、デフォルトでアクティブな式のサポートはありません。ApplicationContext は通常、ここで標準の式戦略を設定し、Unified EL 互換スタイルで "#{...}" 式をサポートします。
ConfigurableBeanFactory
の setBeanExpressionResolver
public BeanExpressionResolver getBeanExpressionResolver()
ConfigurableBeanFactory
ConfigurableBeanFactory
の getBeanExpressionResolver
public void setConversionService(ConversionService conversionService)
ConfigurableBeanFactory
ConfigurableBeanFactory
の setConversionService
public ConversionService getConversionService()
ConfigurableBeanFactory
ConfigurableBeanFactory
の getConversionService
public void addPropertyEditorRegistrar(PropertyEditorRegistrar registrar)
ConfigurableBeanFactory
このようなレジストラは、新しい PropertyEditor インスタンスを作成し、Bean を作成するたびに新しい、指定されたレジストリに登録します。これにより、カスタムエディターで同期する必要がなくなります。ConfigurableBeanFactory.registerCustomEditor(java.lang.Class<?>, java.lang.Class<? extends java.beans.PropertyEditor>)
の代わりにこのメソッドを使用するのが一般的に望ましいです。
ConfigurableBeanFactory
の addPropertyEditorRegistrar
registrar
- 登録する PropertyEditorRegistrarpublic java.util.Set<PropertyEditorRegistrar> getPropertyEditorRegistrars()
public void registerCustomEditor(java.lang.Class<?> requiredType, java.lang.Class<? extends java.beans.PropertyEditor> propertyEditorClass)
ConfigurableBeanFactory
このメソッドは共有カスタムエディターインスタンスを登録することに注意してください。そのインスタンスへのアクセスは、スレッドセーフのために同期されます。カスタムエディターでの同期の必要性を回避するために、このメソッドの代わりに ConfigurableBeanFactory.addPropertyEditorRegistrar(org.springframework.beans.PropertyEditorRegistrar)
を使用することが一般的に推奨されます。
ConfigurableBeanFactory
の registerCustomEditor
requiredType
- プロパティの型 propertyEditorClass
- 登録する PropertyEditor
クラス public void copyRegisteredEditorsTo(PropertyEditorRegistry registry)
ConfigurableBeanFactory
ConfigurableBeanFactory
の copyRegisteredEditorsTo
registry
- 初期化する PropertyEditorRegistrypublic java.util.Map<java.lang.Class<?>,java.lang.Class<? extends java.beans.PropertyEditor>> getCustomEditors()
public void setTypeConverter(TypeConverter typeConverter)
ConfigurableBeanFactory
これにより、デフォルトの PropertyEditor メカニズムがオーバーライドされるため、カスタムエディターやカスタムエディターレジストラーは無関係になります。
protected TypeConverter getCustomTypeConverter()
null
public TypeConverter getTypeConverter()
ConfigurableBeanFactory
デフォルトの PropertyEditor メカニズムがアクティブな場合、返される TypeConverter は、登録されているすべてのカスタムエディターを認識します。
ConfigurableBeanFactory
の getTypeConverter
public void addEmbeddedValueResolver(StringValueResolver valueResolver)
ConfigurableBeanFactory
ConfigurableBeanFactory
の addEmbeddedValueResolver
valueResolver
- 埋め込み値に適用する文字列リゾルバー public boolean hasEmbeddedValueResolver()
ConfigurableBeanFactory
ConfigurableBeanFactory.resolveEmbeddedValue(String)
を通じて適用されるかどうかを判別します。ConfigurableBeanFactory
の hasEmbeddedValueResolver
public java.lang.String resolveEmbeddedValue(java.lang.String value)
ConfigurableBeanFactory
ConfigurableBeanFactory
の resolveEmbeddedValue
value
- 解決する値 public void addBeanPostProcessor(BeanPostProcessor beanPostProcessor)
ConfigurableBeanFactory
メモ: ここで送信されたポストプロセッサーは、登録順に適用されます。Ordered
インターフェースの実装を通じて表現された順序付けのセマンティクスは無視されます。自動検出されたポストプロセッサー(ApplicationContext の Bean など)は、プログラムで登録されたポストプロセッサーの後に常に適用されることに注意してください。
ConfigurableBeanFactory
の addBeanPostProcessor
beanPostProcessor
- 登録するポストプロセッサー public int getBeanPostProcessorCount()
ConfigurableBeanFactory
ConfigurableBeanFactory
の getBeanPostProcessorCount
public java.util.List<BeanPostProcessor> getBeanPostProcessors()
protected boolean hasInstantiationAwareBeanPostProcessors()
protected boolean hasDestructionAwareBeanPostProcessors()
public void registerScope(java.lang.String scopeName, Scope scope)
ConfigurableBeanFactory
ConfigurableBeanFactory
の registerScope
scopeName
- スコープ識別子 scope
- バッキングスコープの実装 public java.lang.String[] getRegisteredScopeNames()
ConfigurableBeanFactory
これは、明示的に登録されたスコープの名前のみを返します。"singleton" や "prototype" などの組み込みスコープは公開されません。
ConfigurableBeanFactory
の getRegisteredScopeNames
ConfigurableBeanFactory.registerScope(java.lang.String, org.springframework.beans.factory.config.Scope)
public Scope getRegisteredScope(java.lang.String scopeName)
ConfigurableBeanFactory
これは明示的に登録されたスコープのみを返します。"singleton" や "prototype" などの組み込みスコープは公開されません。
ConfigurableBeanFactory
の getRegisteredScope
scopeName
- スコープの名前 null
(存在しない場合)ConfigurableBeanFactory.registerScope(java.lang.String, org.springframework.beans.factory.config.Scope)
public void setSecurityContextProvider(SecurityContextProvider securityProvider)
public java.security.AccessControlContext getAccessControlContext()
SecurityContextProvider
に委譲します。ConfigurableBeanFactory
の getAccessControlContext
FactoryBeanRegistrySupport
の getAccessControlContext
null
)AccessController.getContext()
public void copyConfigurationFrom(ConfigurableBeanFactory otherFactory)
ConfigurableBeanFactory
BeanPostProcessors、スコープ、ファクトリ固有の内部設定だけでなく、すべての標準構成設定を含める必要があります。BeanDefinition オブジェクトや Bean 名のエイリアスなど、実際の Bean 定義のメタデータを含めないでください。
ConfigurableBeanFactory
の copyConfigurationFrom
otherFactory
- コピー元のもう 1 つの BeanFactorypublic BeanDefinition getMergedBeanDefinition(java.lang.String name) throws BeansException
この getMergedBeanDefinition
は、祖先の Bean 定義も考慮します。
ConfigurableBeanFactory
の getMergedBeanDefinition
name
- マージされた定義を取得する Bean の名前 (エイリアスの可能性があります)NoSuchBeanDefinitionException
- 指定された名前の Bean がない場合 BeanDefinitionStoreException
- 無効な Bean 定義の場合 BeansException
public boolean isFactoryBean(java.lang.String name) throws NoSuchBeanDefinitionException
ConfigurableBeanFactory
ConfigurableBeanFactory
の isFactoryBean
name
- チェックする Bean の名前 false
は、Bean は存在するが FactoryBean ではないことを意味します)NoSuchBeanDefinitionException
- 指定された名前の Bean がない場合 public boolean isActuallyInCreation(java.lang.String beanName)
DefaultSingletonBeanRegistry
の isActuallyInCreation
protected boolean isPrototypeCurrentlyInCreation(java.lang.String beanName)
beanName
- Bean の名前 protected void beforePrototypeCreation(java.lang.String beanName)
デフォルトの実装では、現在作成中のプロトタイプを登録します。
beanName
- 作成しようとしているプロトタイプの名前 isPrototypeCurrentlyInCreation(java.lang.String)
protected void afterPrototypeCreation(java.lang.String beanName)
デフォルトの実装では、プロトタイプはもう作成されていません。
beanName
- 作成されたプロトタイプの名前 isPrototypeCurrentlyInCreation(java.lang.String)
public void destroyBean(java.lang.String beanName, java.lang.Object beanInstance)
ConfigurableBeanFactory
破棄中に発生した例外は、このメソッドの呼び出し元に伝播するのではなく、キャッチしてログに記録する必要があります。
ConfigurableBeanFactory
の destroyBean
beanName
- Bean 定義の名前 beanInstance
- 破棄する Bean インスタンス protected void destroyBean(java.lang.String beanName, java.lang.Object bean, RootBeanDefinition mbd)
beanName
- Bean 定義の名前 bean
- 破棄する Bean インスタンス mbd
- マージされた Bean 定義 public void destroyScopedBean(java.lang.String beanName)
ConfigurableBeanFactory
破棄中に発生した例外は、このメソッドの呼び出し元に伝播するのではなく、キャッチしてログに記録する必要があります。
ConfigurableBeanFactory
の destroyScopedBean
beanName
- スコープ付き Bean の名前 protected java.lang.String transformedBeanName(java.lang.String name)
name
- ユーザー指定の名前 protected java.lang.String originalBeanName(java.lang.String name)
name
- ユーザー指定の名前 protected void initBeanWrapper(BeanWrapper bw)
デフォルトの実装は registerCustomEditors(org.springframework.beans.PropertyEditorRegistry)
に委譲します。サブクラスでオーバーライドできます。
bw
- 初期化する BeanWrapperprotected void registerCustomEditors(PropertyEditorRegistry registry)
Bean インスタンスを作成および設定する BeanWrappers、およびコンストラクター引数とファクトリメソッド型の変換に使用される SimpleTypeConverter で呼び出されます。
registry
- 初期化する PropertyEditorRegistryprotected RootBeanDefinition getMergedLocalBeanDefinition(java.lang.String beanName) throws BeansException
beanName
- マージされた定義を取得する Bean の名前 NoSuchBeanDefinitionException
- 指定された名前の Bean がない場合 BeanDefinitionStoreException
- 無効な Bean 定義の場合 BeansException
protected RootBeanDefinition getMergedBeanDefinition(java.lang.String beanName, BeanDefinition bd) throws BeanDefinitionStoreException
beanName
- Bean 定義の名前 bd
- 元の Bean 定義 (ルート / ChildBeanDefinition)BeanDefinitionStoreException
- 無効な Bean 定義の場合 protected RootBeanDefinition getMergedBeanDefinition(java.lang.String beanName, BeanDefinition bd, BeanDefinition containingBd) throws BeanDefinitionStoreException
beanName
- Bean 定義の名前 bd
- 元の Bean 定義 (ルート / ChildBeanDefinition)containingBd
- 内部 Bean の場合は包含 Bean 定義、トップレベル Bean の場合は null
BeanDefinitionStoreException
- 無効な Bean 定義の場合 protected void checkMergedBeanDefinition(RootBeanDefinition mbd, java.lang.String beanName, java.lang.Object[] args) throws BeanDefinitionStoreException
mbd
- チェックするマージ済み Bean 定義 beanName
- Bean の名前 args
- Bean 作成の引数(存在する場合)BeanDefinitionStoreException
- 検証に失敗した場合 protected void clearMergedBeanDefinition(java.lang.String beanName)
beanName
- マージされた定義をクリアする Bean 名 public void clearMetadataCache()
通常、元の Bean 定義への変更後にトリガーされます。BeanFactoryPostProcessor
を適用した後。この時点ですでに作成されている Bean のメタデータは保持されます。
protected java.lang.Class<?> resolveBeanClass(RootBeanDefinition mbd, java.lang.String beanName, java.lang.Class<?>... typesToMatch) throws CannotLoadBeanClassException
mbd
- クラスを決定するためのマージされた Bean 定義 beanName
- Bean の名前 (エラー処理のため)typesToMatch
- 内部型マッチングの目的の場合に一致する型 (また、返された Class
がアプリケーションコードに公開されないことを通知します)null
)CannotLoadBeanClassException
- クラスの読み込みに失敗した場合 protected java.lang.Object evaluateBeanDefinitionString(java.lang.String value, BeanDefinition beanDefinition)
value
- チェックする値 beanDefinition
- 値が由来する Bean 定義 setBeanExpressionResolver(org.springframework.beans.factory.config.BeanExpressionResolver)
protected java.lang.Class<?> predictBeanType(java.lang.String beanName, RootBeanDefinition mbd, java.lang.Class<?>... typesToMatch)
getType(java.lang.String)
および isTypeMatch(java.lang.String, org.springframework.core.ResolvableType)
によって呼び出されます。FactoryBeans は未加工の Bean 型でのみ動作することになっているため、特に FactoryBeans を処理する必要はありません。この実装は、ファクトリメソッドと InstantiationAwareBeanPostProcessors を処理できないという点で単純化されています。標準 Bean の場合、Bean 型のみを正しく予測します。サブクラスでオーバーライドされ、より高度な型検出を適用します。
beanName
- Bean の名前 mbd
- 型を決定するマージされた Bean 定義 typesToMatch
- 内部型マッチングの目的の場合に一致する型 (また、返された Class
がアプリケーションコードに公開されないことを通知します)null
protected boolean isFactoryBean(java.lang.String beanName, RootBeanDefinition mbd)
FactoryBean
として定義されているかどうかを確認します。beanName
- Bean の名前 mbd
- 対応する Bean 定義 protected java.lang.Class<?> getTypeForFactoryBean(java.lang.String beanName, RootBeanDefinition mbd)
デフォルトの実装では、getBean
を介して FactoryBean を作成し、その getObjectType
メソッドを呼び出します。サブクラスはこれを最適化することをお勧めします。通常、FactoryBean をインスタンス化するだけで、まだ実装しておらず、getObjectType
メソッドがすでに型を返すかどうかを試します。型が見つからない場合は、この実装で実行される完全な FactoryBean の作成をフォールバックとして使用する必要があります。
beanName
- Bean の名前 mbd
- Bean のマージされた Bean 定義 null
FactoryBean.getObjectType()
, getBean(String)
protected void markBeanAsCreated(java.lang.String beanName)
これにより、Bean ファクトリは、指定された Bean を繰り返し作成するためにキャッシュを最適化できます。
beanName
- Bean の名前 protected void cleanupAfterBeanCreationFailure(java.lang.String beanName)
beanName
- Bean の名前 protected boolean isBeanEligibleForMetadataCaching(java.lang.String beanName)
beanName
- Bean の名前 true
protected boolean removeSingletonIfCreatedForTypeCheckOnly(java.lang.String beanName)
beanName
- Bean の名前 true
、それ以外の場合は false
protected boolean hasBeanCreationStarted()
markBeanAsCreated(java.lang.String)
protected java.lang.Object getObjectForBeanInstance(java.lang.Object beanInstance, java.lang.String name, java.lang.String beanName, RootBeanDefinition mbd)
beanInstance
- 共有 Bean インスタンス name
- ファクトリ逆参照プレフィックスを含む可能性がある名前 beanName
- 正規の Bean 名 mbd
- マージされた Bean 定義 public boolean isBeanNameInUse(java.lang.String beanName)
beanName
- チェックする名前 protected boolean requiresDestruction(java.lang.Object bean, RootBeanDefinition mbd)
デフォルトの実装では、DisposableBean インターフェースと、指定された destroy メソッドおよび登録された DestructionAwareBeanPostProcessors をチェックします。
bean
- チェックする Bean インスタンス mbd
- 対応する Bean 定義 DisposableBean
, AbstractBeanDefinition.getDestroyMethodName()
, DestructionAwareBeanPostProcessor
protected void registerDisposableBeanIfNecessary(java.lang.String beanName, java.lang.Object bean, RootBeanDefinition mbd)
beanName
- Bean の名前 bean
- Bean インスタンス mbd
- Bean の Bean 定義 AbstractBeanDefinition.isSingleton()
, AbstractBeanDefinition.getDependsOn()
, DefaultSingletonBeanRegistry.registerDisposableBean(java.lang.String, org.springframework.beans.factory.DisposableBean)
, DefaultSingletonBeanRegistry.registerDependentBean(java.lang.String, java.lang.String)
protected abstract boolean containsBeanDefinition(java.lang.String beanName)
containsBean
によって呼び出されます。具体的な Bean ファクトリ実装の性質によっては、この操作は(たとえば、外部レジストリでのディレクトリルックアップのため)コストがかかる場合があります。ただし、リスト可能な Bean ファクトリの場合、これは通常、ローカルハッシュルックアップに相当します。操作はパブリックインターフェースの一部です。この場合、同じ実装がこのテンプレートメソッドとパブリックインターフェースメソッドの両方に使用できます。
beanName
- 検索する Bean の名前 containsBean(java.lang.String)
, ListableBeanFactory.containsBeanDefinition(java.lang.String)
protected abstract BeanDefinition getBeanDefinition(java.lang.String beanName) throws BeansException
具体的な Bean ファクトリ実装の性質によっては、この操作は(たとえば、外部レジストリでのディレクトリルックアップのため)コストがかかる場合があります。ただし、リスト可能な Bean ファクトリの場合、これは通常、ローカルハッシュルックアップに相当します。操作はパブリックインターフェースの一部です。この場合、同じ実装がこのテンプレートメソッドとパブリックインターフェースメソッドの両方に使用できます。
beanName
- 定義を検索する Bean の名前 null
)NoSuchBeanDefinitionException
- Bean 定義を解決できない場合 BeansException
- エラーの場合 RootBeanDefinition
, ChildBeanDefinition
, ConfigurableListableBeanFactory.getBeanDefinition(java.lang.String)
protected abstract java.lang.Object createBean(java.lang.String beanName, RootBeanDefinition mbd, java.lang.Object[] args) throws BeanCreationException
すべての Bean 検索メソッドは、実際の Bean 作成のためにこのメソッドに委譲します。
beanName
- Bean の名前 mbd
- Bean のマージされた Bean 定義 args
- コンストラクターまたはファクトリメソッドの呼び出しに使用する明示的な引数 BeanCreationException
- Bean を作成できなかった場合