クラス DefaultSingletonBeanRegistry
- 実装されたすべてのインターフェース:
SingletonBeanRegistry
,AliasRegistry
- 既知の直属サブクラス
FactoryBeanRegistrySupport
SingletonBeanRegistry
を実装する、共有 Bean インスタンスの汎用レジストリ。レジストリのすべての呼び出し元で共有する必要のあるシングルトンインスタンスを登録し、Bean 名で取得できるようにします。 また、レジストリのシャットダウン時に破棄される DisposableBean
インスタンスの登録(登録されたシングルトンに対応する場合と対応しない場合があります)もサポートします。Bean 間の依存関係を登録して、適切なシャットダウン順序を強制できます。
このクラスは主に BeanFactory
実装の基本クラスとして機能し、シングルトン Bean インスタンスの一般的な管理を除外します。ConfigurableBeanFactory
インターフェースは SingletonBeanRegistry
インターフェースを継承することに注意してください。
このクラスは、AbstractBeanFactory
および DefaultListableBeanFactory
(これを継承する)とは対照的に、Bean 定義の概念も Bean インスタンスの特定の作成プロセスも想定していないことに注意してください。または、委譲先のネストされたヘルパーとして使用することもできます。
フィールドサマリー
クラス org.springframework.core.SimpleAliasRegistry から継承されたフィールド
logger
コンストラクターのサマリー
メソッドのサマリー
修飾子と型メソッド説明protected void
addSingleton
(StringSE beanName, ObjectSE singletonObject) 指定されたシングルトンオブジェクトをこのファクトリのシングルトンキャッシュに追加します。protected void
addSingletonFactory
(StringSE beanName, ObjectFactory<?> singletonFactory) 必要に応じて、指定されたシングルトンを構築するために、指定されたシングルトンファクトリを追加します。protected void
afterSingletonCreation
(StringSE beanName) シングルトン作成後のコールバック。protected void
beforeSingletonCreation
(StringSE beanName) シングルトン作成前のコールバック。protected void
このレジストリ内のすべてのキャッシュされたシングルトンインスタンスをクリアします。boolean
containsSingleton
(StringSE beanName) このレジストリに、指定された名前のシングルトンインスタンスが含まれているかどうかを確認します。protected void
destroyBean
(StringSE beanName, DisposableBean bean) 指定された Bean を破棄します。void
destroySingleton
(StringSE beanName) 指定された Bean を破棄します。void
StringSE[]
getDependenciesForBean
(StringSE beanName) 指定された Bean が依存するすべての Bean の名前を返します(存在する場合)。StringSE[]
getDependentBeans
(StringSE beanName) 指定された Bean に依存するすべての Bean の名前を返します(存在する場合)。getSingleton
(StringSE beanName) 指定された名前で登録された(生の)シングルトンオブジェクトを返します。protected ObjectSE
getSingleton
(StringSE beanName, boolean allowEarlyReference) 指定された名前で登録された(生の)シングルトンオブジェクトを返します。getSingleton
(StringSE beanName, ObjectFactory<?> singletonFactory) 指定された名前で登録された(生の)シングルトンオブジェクトを返し、まだ登録されていない場合は新しいオブジェクトを作成して登録します。int
このレジストリに登録されているシングルトン Bean の数を返します。final ObjectSE
シングルトンミューテックスをサブクラスおよび外部の協力者に公開します。StringSE[]
このレジストリに登録されているシングルトン Bean の名前を返します。protected boolean
hasDependentBean
(StringSE beanName) 指定された名前に依存する Bean が登録されているかどうかを判別します。protected boolean
isActuallyInCreation
(StringSE beanName) boolean
isCurrentlyInCreation
(StringSE beanName) protected boolean
isDependent
(StringSE beanName, StringSE dependentBeanName) 指定された依存 Bean が、指定された Bean またはその推移的な依存関係のいずれかに依存するものとして登録されているかどうかを判別します。boolean
isSingletonCurrentlyInCreation
(StringSE beanName) 指定されたシングルトン Bean が現在(ファクトリ全体内で)作成中かどうかを返します。protected void
シングルトン Bean インスタンスの作成中に発生した例外を登録します。void
registerContainedBean
(StringSE containedBeanName, StringSE containingBeanName) 2 つの Bean 間の包含関連を登録します。void
registerDependentBean
(StringSE beanName, StringSE dependentBeanName) 所定の Bean が破棄される前に破棄される、所定の Bean の依存 Bean を登録します。void
registerDisposableBean
(StringSE beanName, DisposableBean bean) 指定された Bean をこのレジストリの使い捨て Bean のリストに追加します。void
registerSingleton
(StringSE beanName, ObjectSE singletonObject) 指定された既存のオブジェクトを、指定された Bean 名で、Bean レジストリにシングルトンとして登録します。protected void
removeSingleton
(StringSE beanName) このファクトリのシングルトンキャッシュから指定された名前の Bean を削除し、作成が失敗した場合にシングルトンの積極的な登録をクリーンアップできるようにします。void
setCurrentlyInCreation
(StringSE beanName, boolean inCreation) クラス org.springframework.core.SimpleAliasRegistry から継承されたメソッド
allowAliasOverriding, canonicalName, checkForAliasCircle, getAliases, hasAlias, isAlias, registerAlias, removeAlias, resolveAliases
コンストラクターの詳細
DefaultSingletonBeanRegistry
public DefaultSingletonBeanRegistry()
メソッドの詳細
registerSingleton
public void registerSingleton(StringSE beanName, ObjectSE singletonObject) throws IllegalStateExceptionSE インターフェースからコピーされた説明:SingletonBeanRegistry
指定された既存のオブジェクトを、指定された Bean 名で、Bean レジストリにシングルトンとして登録します。与えられたインスタンスは完全に初期化されることになっています。レジストリは初期化コールバックを実行しません(特に、InitializingBean の
afterPropertiesSet
メソッドを呼び出しません)。指定されたインスタンスは、(DisposableBean のdestroy
メソッドのような)破棄コールバックも受け取りません。完全な BeanFactory 内で実行する場合: Bean が初期化および / または破棄コールバックを受け取ることになっている場合、既存のインスタンスの代わりに Bean 定義を登録します。
通常、レジストリ設定中に呼び出されますが、シングルトンのランタイム登録にも使用できます。結果として、レジストリ実装はシングルトンアクセスを同期する必要があります。BeanFactory のシングルトンの遅延初期化をサポートする場合、これを行う必要があります。
- 次で指定:
- インターフェース
SingletonBeanRegistry
のregisterSingleton
- パラメーター:
beanName
- Bean の名前singletonObject
- 既存のシングルトンオブジェクト- 例外:
IllegalStateExceptionSE
- 関連事項:
addSingleton
指定されたシングルトンオブジェクトをこのファクトリのシングルトンキャッシュに追加します。シングルトンの積極的な登録のために呼び出されます。
- パラメーター:
beanName
- Bean の名前singletonObject
- シングルトンオブジェクト
addSingletonFactory
必要に応じて、指定されたシングルトンを構築するために、指定されたシングルトンファクトリを追加します。シングルトンの先行した登録を求められる循環参照を解決できるようにします。
- パラメーター:
beanName
- Bean の名前singletonFactory
- シングルトンオブジェクトのファクトリ
getSingleton
インターフェースからコピーされた説明:SingletonBeanRegistry
指定された名前で登録された(生の)シングルトンオブジェクトを返します。すでにインスタンス化されているシングルトンのみをチェックします。まだインスタンス化されていないシングルトン Bean 定義のオブジェクトを返しません。
このメソッドの主な目的は、手動で登録されたシングルトンにアクセスすることです(
SingletonBeanRegistry.registerSingleton(java.lang.String, java.lang.Object)
を参照)。また、すでに作成されている Bean 定義によって定義されたシングルトンにそのままのメソッドでアクセスするためにも使用できます。注意 : この検索方法は、FactoryBean のプレフィックスまたはエイリアスを認識しません。シングルトンインスタンスを取得する前に、最初に正規の Bean 名を解決する必要があります。
- 次で指定:
- インターフェース
SingletonBeanRegistry
のgetSingleton
- パラメーター:
beanName
- 検索する Bean の名前- 戻り値:
- 登録されたシングルトンオブジェクト。見つからない場合は
null
- 関連事項:
getSingleton
指定された名前で登録された(生の)シングルトンオブジェクトを返します。すでにインスタンス化されているシングルトンをチェックし、現在作成されているシングルトンへの早期参照も可能にします(循環参照の解決)。
- パラメーター:
beanName
- 検索する Bean の名前allowEarlyReference
- 早期参照を作成する必要があるかどうか- 戻り値:
- 登録されたシングルトンオブジェクト。見つからない場合は
null
getSingleton
指定された名前で登録された(生の)シングルトンオブジェクトを返し、まだ登録されていない場合は新しいオブジェクトを作成して登録します。- パラメーター:
beanName
- Bean の名前singletonFactory
- 必要に応じてシングルトンを遅延作成する ObjectFactory- 戻り値:
- 登録されたシングルトンオブジェクト
onSuppressedException
シングルトン Bean インスタンスの作成中に発生した例外を登録します。一時的な循環参照解決の問題。デフォルトの実装では、このレジストリの抑制された例外のコレクションにある特定の例外が 100 例外まで保持され、関連する原因として最終的なトップレベルの
BeanCreationException
に追加されます。- パラメーター:
ex
- 登録する例外- 関連事項:
removeSingleton
このファクトリのシングルトンキャッシュから指定された名前の Bean を削除し、作成が失敗した場合にシングルトンの積極的な登録をクリーンアップできるようにします。- パラメーター:
beanName
- Bean の名前- 関連事項:
containsSingleton
インターフェースからコピーされた説明:SingletonBeanRegistry
このレジストリに、指定された名前のシングルトンインスタンスが含まれているかどうかを確認します。すでにインスタンス化されているシングルトンのみをチェックします。まだインスタンス化されていないシングルトン Bean 定義の
true
を返しません。このメソッドの主な目的は、手動で登録されたシングルトンをチェックすることです(
SingletonBeanRegistry.registerSingleton(java.lang.String, java.lang.Object)
を参照)。Bean 定義で定義されたシングルトンがすでに作成されているかどうかを確認するためにも使用できます。Bean ファクトリに特定の名前の Bean 定義が含まれているかどうかを確認するには、ListableBeanFactory の
containsBeanDefinition
を使用します。containsBeanDefinition
とcontainsSingleton
の両方を呼び出すと、特定の Bean ファクトリに、指定された名前のローカル Bean インスタンスが含まれているかどうかがわかります。BeanFactory の
containsBean
を使用して、ファクトリが特定の名前の Bean を知っているかどうか(手動でシングルトンインスタンスを登録したか、Bean 定義によって作成されたか)を確認し、祖先ファクトリもチェックします。注意 : この検索方法は、FactoryBean のプレフィックスまたはエイリアスを認識しません。シングルトンステータスを確認する前に、最初に正規の Bean 名を解決する必要があります。
- 次で指定:
- インターフェース
SingletonBeanRegistry
のcontainsSingleton
- パラメーター:
beanName
- 検索する Bean の名前- 戻り値:
- この Bean ファクトリに、指定された名前のシングルトンインスタンスが含まれている場合
- 関連事項:
getSingletonNames
インターフェースからコピーされた説明:SingletonBeanRegistry
このレジストリに登録されているシングルトン Bean の名前を返します。すでにインスタンス化されているシングルトンのみをチェックします。まだインスタンス化されていないシングルトン Bean 定義の名前は返しません。
このメソッドの主な目的は、手動で登録されたシングルトンをチェックすることです(
SingletonBeanRegistry.registerSingleton(java.lang.String, java.lang.Object)
を参照)。Bean 定義で定義されているシングルトンがすでに作成されているかどうかを確認するためにも使用できます。- 次で指定:
- インターフェース
SingletonBeanRegistry
のgetSingletonNames
- 戻り値:
- 文字列配列としての名前のリスト (非
null
) - 関連事項:
getSingletonCount
public int getSingletonCount()インターフェースからコピーされた説明:SingletonBeanRegistry
このレジストリに登録されているシングルトン Bean の数を返します。すでにインスタンス化されているシングルトンのみをチェックします。まだインスタンス化されていないシングルトン Bean 定義はカウントしません。
このメソッドの主な目的は、手動で登録されたシングルトンをチェックすることです(
SingletonBeanRegistry.registerSingleton(java.lang.String, java.lang.Object)
を参照)。すでに作成されている Bean 定義によって定義されたシングルトンの数をカウントするためにも使用できます。setCurrentlyInCreation
isCurrentlyInCreation
isActuallyInCreation
isSingletonCurrentlyInCreation
指定されたシングルトン Bean が現在(ファクトリ全体内で)作成中かどうかを返します。- パラメーター:
beanName
- Bean の名前
beforeSingletonCreation
シングルトン作成前のコールバック。デフォルトの実装では、現在作成中のシングルトンを登録します。
- パラメーター:
beanName
- 作成されるシングルトンの名前- 関連事項:
afterSingletonCreation
シングルトン作成後のコールバック。デフォルトの実装では、シングルトンはもう作成されていません。
- パラメーター:
beanName
- 作成されたシングルトンの名前- 関連事項:
registerDisposableBean
指定された Bean をこのレジストリの使い捨て Bean のリストに追加します。使い捨て Bean は通常、登録済みのシングルトンに対応し、Bean 名と一致しますが、異なるインスタンスになる可能性があります(たとえば、Spring の DisposableBean インターフェースを自然に実装しないシングルトン用の DisposableBean アダプター)。
- パラメーター:
beanName
- Bean の名前bean
- Bean インスタンス
registerContainedBean
2 つの Bean 間の包含関連を登録します。内部 Bean とそれを含む外部 Bean の間。また、含まれている Bean を、破棄の順序に関して、含まれている Bean に依存するものとして登録します。
- パラメーター:
containedBeanName
- 含まれている(内部)Bean の名前containingBeanName
- 包含(外部)Bean の名前- 関連事項:
registerDependentBean
所定の Bean が破棄される前に破棄される、所定の Bean の依存 Bean を登録します。- パラメーター:
beanName
- Bean の名前dependentBeanName
- 依存 Bean の名前
isDependent
指定された依存 Bean が、指定された Bean またはその推移的な依存関係のいずれかに依存するものとして登録されているかどうかを判別します。- パラメーター:
beanName
- チェックする Bean の名前dependentBeanName
- 依存 Bean の名前- 導入:
- 4.0
hasDependentBean
指定された名前に依存する Bean が登録されているかどうかを判別します。- パラメーター:
beanName
- チェックする Bean の名前
getDependentBeans
指定された Bean に依存するすべての Bean の名前を返します(存在する場合)。- パラメーター:
beanName
- Bean の名前- 戻り値:
- 依存する Bean 名の配列、ない場合は空の配列
getDependenciesForBean
指定された Bean が依存するすべての Bean の名前を返します(存在する場合)。- パラメーター:
beanName
- Bean の名前- 戻り値:
- Bean が依存する Bean の名前の配列、ない場合は空の配列
destroySingletons
public void destroySingletons()clearSingletonCache
protected void clearSingletonCache()このレジストリ内のすべてのキャッシュされたシングルトンインスタンスをクリアします。- 導入:
- 4.3.15
destroySingleton
与えられた Bean を破棄します。対応する使い捨て Bean インスタンスが見つかった場合は、destroyBean
に委譲します。- パラメーター:
beanName
- Bean の名前- 関連事項:
destroyBean
与えられた Bean を破棄します。Bean 自体の前に、指定された Bean に依存する Bean を破棄する必要があります。例外をスローするべきではありません。- パラメーター:
beanName
- Bean の名前bean
- 破棄する Bean インスタンス
getSingletonMutex
シングルトンミューテックスをサブクラスおよび外部の協力者に公開します。サブクラスは、何らかの拡張されたシングルトン作成フェーズを実行する場合、指定されたオブジェクトで同期する必要があります。特に、lazy-init の状況でデッドロックが発生する可能性を回避するために、サブクラスはシングルトンの作成に関与する独自のミューテックスを持っていてはなりません。
- 次で指定:
- インターフェース
SingletonBeanRegistry
のgetSingletonMutex
- 戻り値:
- ミューテックスオブジェクト (非
null
)