インターフェース BeanFactory
- すべての既知のサブインターフェース:
ApplicationContext
、AutowireCapableBeanFactory
、ConfigurableApplicationContext
、ConfigurableBeanFactory
、ConfigurableListableBeanFactory
、ConfigurableWebApplicationContext
、HierarchicalBeanFactory
、ListableBeanFactory
、WebApplicationContext
- すべての既知の実装クラス:
AbstractApplicationContext
、AbstractAutowireCapableBeanFactory
、AbstractBeanFactory
、AbstractRefreshableApplicationContext
、AbstractRefreshableConfigApplicationContext
、AbstractRefreshableWebApplicationContext
、AbstractXmlApplicationContext
、AnnotationConfigApplicationContext
、AnnotationConfigWebApplicationContext
、ClassPathXmlApplicationContext
、DefaultListableBeanFactory
、FileSystemXmlApplicationContext
、GenericApplicationContext
、GenericGroovyApplicationContext
、GenericWebApplicationContext
、GenericXmlApplicationContext
、GroovyWebApplicationContext
、SimpleJndiBeanFactory
、StaticApplicationContext
、StaticListableBeanFactory
、StaticWebApplicationContext
、XmlWebApplicationContext
これは、Bean コンテナーの基本的なクライアントビューです。ListableBeanFactory
や ConfigurableBeanFactory
などのその他のインターフェースは、特定の目的で使用できます。
このインターフェースは、文字列名によって一意に識別される複数の Bean 定義を保持するオブジェクトによって実装されています。Bean 定義に応じて、ファクトリは、含まれるオブジェクトの独立したインスタンス(プロトタイプデザインパターン)、または単一の共有インスタンス(シングルトンデザインパターンの優れた代替案で、ファクトリのスコープ内でインスタンスがシングルトンである)のいずれかを返します。どの型のインスタンスが返されるかは、Bean ファクトリの設定に依存します。API は同じです。Spring 2.0 以降、具体的なアプリケーションコンテキストに応じて、さらにスコープが利用可能になりました(例: Web 環境でのリクエストやセッションスコープ)。
このアプローチのポイントは、BeanFactory がアプリケーションコンポーネントの主要レジストリであり、アプリケーションコンポーネントの構成を一元化することです(たとえば、個々のオブジェクトがプロパティファイルを読み取る必要がなくなります)。このアプローチの利点については、"Expert One-on-One J2EE Design and Development" の第 4 章と第 11 章を参照してください。
BeanFactory ルックアップのような「プル」構成の形式を使用するよりも、setter またはコンストラクターを介してアプリケーションオブジェクトを構成するために、依存性注入(「プッシュ」構成)に依存する方が一般に良いことに注意してください。Spring の依存性注入機能は、この BeanFactory インターフェースとそのサブインターフェースを使用して実装されます。
通常、BeanFactory は、構成ソース(XML ドキュメントなど)に格納されている Bean 定義をロードし、org.springframework.beans
パッケージを使用して Bean を構成します。ただし、実装は、必要に応じて作成した Java オブジェクトを Java コードで直接返すことができます。定義の保存方法に制限はありません。LDAP、RDBMS、XML、プロパティファイルなどです。実装は、Bean 間の参照をサポートすることをお勧めします(依存性注入)。
ListableBeanFactory
のメソッドとは異なり、このインターフェースのすべての操作では、これが HierarchicalBeanFactory
の場合、親ファクトリもチェックされます。このファクトリインスタンスに Bean が見つからない場合、直接の親ファクトリが要求されます。このファクトリインスタンスの Bean は、親ファクトリの同じ名前の Bean をオーバーライドすることになっています。
Bean ファクトリ実装は、標準の Bean ライフサイクルインターフェースを可能な限りサポートする必要があります。初期化メソッドとその標準的な順序の完全なセットは次のとおりです。
- BeanNameAware の
setBeanName
- BeanClassLoaderAware の
setBeanClassLoader
- BeanFactoryAware の
setBeanFactory
- EnvironmentAware の
setEnvironment
- EmbeddedValueResolverAware の
setEmbeddedValueResolver
- ResourceLoaderAware の
setResourceLoader
(アプリケーションコンテキストで実行する場合にのみ適用されます) - ApplicationEventPublisherAware の
setApplicationEventPublisher
(アプリケーションコンテキストで実行する場合にのみ適用されます) - MessageSourceAware の
setMessageSource
(アプリケーションコンテキストで実行する場合にのみ適用されます) - ApplicationContextAware の
setApplicationContext
(アプリケーションコンテキストで実行する場合にのみ適用されます) - ServletContextAware の
setServletContext
(Web アプリケーションコンテキストで実行する場合にのみ適用可能) - BeanPostProcessors の
postProcessBeforeInitialization
メソッド - InitializingBean の
afterPropertiesSet
- カスタム
init-method
定義 - BeanPostProcessors の
postProcessAfterInitialization
メソッド
Bean ファクトリのシャットダウン時には、次のライフサイクルメソッドが適用されます。
- DestructionAwareBeanPostProcessors の
postProcessBeforeDestruction
メソッド - DisposableBean の
destroy
- カスタム
destroy-method
定義
- 導入:
- 2001 年 4 月 13 日
- 作成者:
- Rod Johnson, Juergen Hoeller, Chris Beams
- 関連事項:
BeanNameAware.setBeanName(java.lang.String)
BeanClassLoaderAware.setBeanClassLoader(java.lang.ClassLoader)
BeanFactoryAware.setBeanFactory(org.springframework.beans.factory.BeanFactory)
EnvironmentAware.setEnvironment(org.springframework.core.env.Environment)
EmbeddedValueResolverAware.setEmbeddedValueResolver(org.springframework.util.StringValueResolver)
ResourceLoaderAware.setResourceLoader(org.springframework.core.io.ResourceLoader)
ApplicationEventPublisherAware.setApplicationEventPublisher(org.springframework.context.ApplicationEventPublisher)
MessageSourceAware.setMessageSource(org.springframework.context.MessageSource)
ApplicationContextAware.setApplicationContext(org.springframework.context.ApplicationContext)
ServletContextAware.setServletContext(jakarta.servlet.ServletContext)
BeanPostProcessor.postProcessBeforeInitialization(java.lang.Object, java.lang.String)
InitializingBean.afterPropertiesSet()
AbstractBeanDefinition.getInitMethodName()
BeanPostProcessor.postProcessAfterInitialization(java.lang.Object, java.lang.String)
DestructionAwareBeanPostProcessor.postProcessBeforeDestruction(java.lang.Object, java.lang.String)
DisposableBean.destroy()
AbstractBeanDefinition.getDestroyMethodName()
フィールドサマリー
修飾子と型フィールド説明static final StringSE
FactoryBean
インスタンスを逆参照し、FactoryBean によって作成された Bean と区別するために使用されます。メソッドのサマリー
修飾子と型メソッド説明boolean
containsBean
(StringSE name) この Bean ファクトリには、指定された名前の Bean 定義または外部登録されたシングルトンインスタンスが含まれているか判定します。StringSE[]
getAliases
(StringSE name) 存在する場合、指定された Bean 名のエイリアスを返します。<T> T
指定されたオブジェクト型が存在する場合、一意に一致する Bean インスタンスを返します。<T> T
指定された Bean のインスタンス(共有または独立)を返します。指定された Bean のインスタンス(共有または独立)を返します。<T> T
指定された Bean のインスタンス(共有または独立)を返します。指定された Bean のインスタンス(共有または独立)を返します。<T> ObjectProvider<T>
getBeanProvider
(ClassSE<T> requiredType) 指定された Bean のプロバイダーを返します。これにより、可用性および一意性オプションを含め、インスタンスの遅延オンデマンド取得が可能になります。<T> ObjectProvider<T>
getBeanProvider
(ResolvableType requiredType) 指定された Bean のプロバイダーを返します。これにより、可用性および一意性オプションを含め、インスタンスの遅延オンデマンド取得が可能になります。ClassSE<?>
指定された名前の Bean の型を判別します。ClassSE<?>
指定された名前の Bean の型を判別します。boolean
isPrototype
(StringSE name) この Bean はプロトタイプですか? つまり、getBean(java.lang.String)
は常に独立したインスタンスを返しますか?boolean
isSingleton
(StringSE name) この Bean は共有シングルトンですか? つまり、getBean(java.lang.String)
は常に同じインスタンスを返しますか?boolean
isTypeMatch
(StringSE name, ClassSE<?> typeToMatch) 指定された名前の Bean が指定された型と一致するかどうかを確認します。boolean
isTypeMatch
(StringSE name, ResolvableType typeToMatch) 指定された名前の Bean が指定された型と一致するかどうかを確認します。
フィールドの詳細
FACTORY_BEAN_PREFIX
FactoryBean
インスタンスを逆参照し、FactoryBean によって作成された Bean と区別するために使用されます。例:myJndiObject
という名前の Bean が FactoryBean の場合、&myJndiObject
を取得すると、ファクトリによって返されるインスタンスではなく、ファクトリが返されます。- 関連事項:
メソッドの詳細
getBean
指定された Bean のインスタンス(共有または独立)を返します。この方法では、Spring BeanFactory をシングルトンまたはプロトタイプの設計パターンの代わりとして使用できます。シングルトン Bean の場合、呼び出し元は返されたオブジェクトへの参照を保持できます。
エイリアスを対応する正規の Bean 名に変換します。
このファクトリインスタンスで Bean が見つからないかどうかを親ファクトリに確認します。
- パラメーター:
name
- 取得する Bean の名前- 戻り値:
- Bean のインスタンス。戻り値が
null
になることはありませんが、ファクトリメソッドから返されたnull
のスタブになる可能性があり、equals(null)
を介してチェックされることに注意してください。オプションの依存関係を解決するには、getBeanProvider(Class)
の使用を検討してください。 - 例外:
NoSuchBeanDefinitionException
- 指定された名前の Bean がない場合BeansException
- Bean を取得できなかった場合
getBean
指定された Bean のインスタンス(共有または独立)を返します。getBean(String)
と同じように動作しますが、Bean が必要な型でない場合は BeanNotOfRequiredTypeException をスローすることにより、型安全の基準を提供します。これは、getBean(String)
で発生する可能性があるように、結果を正しくキャストすると ClassCastException がスローされないことを意味します。エイリアスを対応する正規の Bean 名に変換します。
このファクトリインスタンスで Bean が見つからないかどうかを親ファクトリに確認します。
- パラメーター:
name
- 取得する Bean の名前requiredType
- Bean が一致する必要があることを入力します。インターフェースまたはスーパークラスにすることができます- 戻り値:
- Bean のインスタンス。戻り値が
null
になることはないことに注意してください。リクエストされた Bean に対して解決されたファクトリメソッドからのnull
のスタブの場合、NullBean スタブに対するBeanNotOfRequiredTypeException
が発生します。オプションの依存関係を解決するには、getBeanProvider(Class)
の使用を検討してください。 - 例外:
NoSuchBeanDefinitionException
- そのような Bean 定義がない場合BeanNotOfRequiredTypeException
- Bean が必要な型でない場合BeansException
- Bean を作成できなかった場合
getBean
指定された Bean のインスタンス(共有または独立)を返します。Bean 定義で指定されたデフォルト引数 (存在する場合) をオーバーライドして、明示的なコンストラクター引数 / ファクトリメソッド引数を指定できるようにします。指定された引数は、宣言されたパラメーターの順序で特定の候補コンストラクター / ファクトリメソッドと一致する必要があることに注意してください。
- パラメーター:
name
- 取得する Bean の名前args
- 明示的な引数を使用して Bean インスタンスを作成するときに使用する引数 (既存のインスタンスを取得するのではなく、新しいインスタンスを作成するときにのみ適用されます)- 戻り値:
- Bean のインスタンス
- 例外:
NoSuchBeanDefinitionException
- そのような Bean 定義がない場合BeanDefinitionStoreException
- 引数は指定されているが、影響を受ける Bean がプロトタイプではない場合BeansException
- Bean を作成できなかった場合- 導入:
- 2.5
getBean
指定されたオブジェクト型が存在する場合、一意に一致する Bean インスタンスを返します。このメソッドは、
ListableBeanFactory
の型別ルックアップ領域に入りますが、指定された型の名前に基づいた従来の名前別ルックアップにも変換できます。Bean のセット全体でより広範な検索操作を行うには、ListableBeanFactory
またはBeanFactoryUtils
(あるいはその両方)を使用します。- パラメーター:
requiredType
- Bean が一致する必要があることを入力します。インターフェースまたはスーパークラスにすることができます- 戻り値:
- 必要な型に一致する単一の Bean のインスタンス
- 例外:
NoSuchBeanDefinitionException
- 指定された型の Bean が見つからなかった場合NoUniqueBeanDefinitionException
- 指定された型の複数の Bean が見つかった場合BeansException
- Bean を作成できなかった場合- 導入:
- 3.0
- 関連事項:
getBean
指定された Bean のインスタンス(共有または独立)を返します。Bean 定義で指定されたデフォルト引数 (存在する場合) をオーバーライドして、明示的なコンストラクター引数 / ファクトリメソッド引数を指定できるようにします。指定された引数は、宣言されたパラメーターの順序で特定の候補コンストラクター / ファクトリメソッドと一致する必要があることに注意してください。
このメソッドは、
ListableBeanFactory
の型別ルックアップ領域に入りますが、指定された型の名前に基づいた従来の名前別ルックアップにも変換できます。Bean のセット全体でより広範な検索操作を行うには、ListableBeanFactory
またはBeanFactoryUtils
(あるいはその両方)を使用します。- パラメーター:
requiredType
- Bean が一致する必要があることを入力します。インターフェースまたはスーパークラスにすることができますargs
- 明示的な引数を使用して Bean インスタンスを作成するときに使用する引数 (既存のインスタンスを取得するのではなく、新しいインスタンスを作成するときにのみ適用されます)- 戻り値:
- Bean のインスタンス
- 例外:
NoSuchBeanDefinitionException
- そのような Bean 定義がない場合BeanDefinitionStoreException
- 引数は指定されているが、影響を受ける Bean がプロトタイプではない場合BeansException
- Bean を作成できなかった場合- 導入:
- 4.1
getBeanProvider
指定された Bean のプロバイダーを返します。これにより、可用性および一意性オプションを含め、インスタンスの遅延オンデマンド取得が可能になります。ジェネリクス型を照合するには、
getBeanProvider(ResolvableType)
を検討してください。- パラメーター:
requiredType
- Bean が一致する必要があることを入力します。インターフェースまたはスーパークラスにすることができます- 戻り値:
- 対応するプロバイダーのハンドル
- 導入:
- 5.1
- 関連事項:
getBeanProvider
指定された Bean のプロバイダーを返します。これにより、可用性と一意性のオプションを含む、インスタンスの遅延オンデマンド取得が可能になります。このバリアントでは、メソッド / コンストラクターパラメーターでジェネリクス型宣言を使用するリフレクションインジェクションポイントと同様に、一致するジェネリクス型を指定できます。リフレクティブインジェクションポイントとは対照的に、ここでは Bean のコレクションはサポートされていないことに注意してください。特定の型に一致する Bean のリストをプログラムで取得するには、ここで引数として実際の Bean 型を指定し、その後
ObjectProvider.orderedStream()
またはその遅延ストリーミング / 反復オプションを使用します。また、ジェネリクスのマッチングは、Java の割り当てルールに従って、ここでは厳密です。チェックされていないセマンティクスによる緩やかなフォールバックマッチング ('unchecked' Java コンパイラーの警告と同様) の場合、このバリアントで完全なジェネリクスマッチが
available
にない場合は、2 番目のステップとして生の型でgetBeanProvider(Class)
を呼び出すことを検討してください。- パラメーター:
requiredType
- Bean が一致する必要があると入力します。ジェネリクス型宣言にすることができます- 戻り値:
- 対応するプロバイダーのハンドル
- 導入:
- 5.1
- 関連事項:
containsBean
この Bean ファクトリには、指定された名前の Bean 定義または外部登録されたシングルトンインスタンスが含まれているか判定します。指定された名前がエイリアスの場合、対応する正規の Bean 名に変換されます。
このファクトリが階層的である場合、このファクトリインスタンスで Bean が見つからないかどうかを親ファクトリに問い合わせます。
指定された名前に一致する Bean 定義またはシングルトンインスタンスが見つかった場合、このメソッドは、名前付き Bean 定義がスコープ内で具体的または抽象的、遅延または先行であるかどうかにかかわらず、
true
を返します。このメソッドからのtrue
戻り値は、必ずしもgetBean(java.lang.String)
が同じ名前のインスタンスを取得できることを示しているわけではないことに注意してください。- パラメーター:
name
- 照会する Bean の名前- 戻り値:
- 指定された名前の Bean が存在するかどうか
isSingleton
この Bean は共有シングルトンですか? つまり、getBean(java.lang.String)
は常に同じインスタンスを返しますか?メモ:
false
を返すこのメソッドは、独立したインスタンスを明確に示していません。これは、スコープが設定された Bean にも対応している可能性がある非シングルトンインスタンスを示します。isPrototype(java.lang.String)
操作を使用して、独立したインスタンスを明示的にチェックします。エイリアスを対応する正規の Bean 名に変換します。
このファクトリインスタンスで Bean が見つからないかどうかを親ファクトリに確認します。
- パラメーター:
name
- 照会する Bean の名前- 戻り値:
- この Bean がシングルトンインスタンスに対応するかどうか
- 例外:
NoSuchBeanDefinitionException
- 指定された名前の Bean がない場合- 関連事項:
isPrototype
この Bean はプロトタイプですか? つまり、getBean(java.lang.String)
は常に独立したインスタンスを返しますか?メモ:
false
を返すこのメソッドは、シングルトンオブジェクトを明確に示していません。これは独立したインスタンスを示し、スコープ付き Bean にも対応する場合があります。isSingleton(java.lang.String)
操作を使用して、共有シングルトンインスタンスを明示的に確認します。エイリアスを対応する正規の Bean 名に変換します。
このファクトリインスタンスで Bean が見つからないかどうかを親ファクトリに確認します。
- パラメーター:
name
- 照会する Bean の名前- 戻り値:
- この Bean が常に独立したインスタンスを配信するかどうか
- 例外:
NoSuchBeanDefinitionException
- 指定された名前の Bean がない場合- 導入:
- 2.0.3
- 関連事項:
isTypeMatch
指定された名前の Bean が指定された型と一致するかどうかを確認します。より具体的には、指定された名前のgetBean(java.lang.String)
呼び出しが、指定されたターゲット型に割り当て可能なオブジェクトを返すかどうかを確認します。エイリアスを対応する正規の Bean 名に変換します。
このファクトリインスタンスで Bean が見つからないかどうかを親ファクトリに確認します。
- パラメーター:
name
- 照会する Bean の名前typeToMatch
- 照合する型 (ResolvableType
として)- 戻り値:
- Bean 型が一致する場合は
true
、一致しないかまだ判別できない場合はfalse
- 例外:
NoSuchBeanDefinitionException
- 指定された名前の Bean がない場合- 導入:
- 4.2
- 関連事項:
isTypeMatch
指定された名前の Bean が指定された型と一致するかどうかを確認します。より具体的には、指定された名前のgetBean(java.lang.String)
呼び出しが、指定されたターゲット型に割り当て可能なオブジェクトを返すかどうかを確認します。エイリアスを対応する正規の Bean 名に変換します。
このファクトリインスタンスで Bean が見つからないかどうかを親ファクトリに確認します。
- パラメーター:
name
- 照会する Bean の名前typeToMatch
- 照合する型 (Class
として)- 戻り値:
- Bean 型が一致する場合は
true
、一致しないかまだ判別できない場合はfalse
- 例外:
NoSuchBeanDefinitionException
- 指定された名前の Bean がない場合- 導入:
- 2.0.1
- 関連事項:
getType
指定された名前の Bean の型を判別します。具体的には、指定された名前に対してgetBean(java.lang.String)
が返すオブジェクトの型を決定します。FactoryBean
の場合は、FactoryBean.getObjectType()
によって公開されている、FactoryBean が作成するオブジェクトの型を返します。これにより、以前に初期化されていないFactoryBean
(getType(String, boolean)
を参照)が初期化される可能性があります。エイリアスを対応する正規の Bean 名に変換します。
このファクトリインスタンスで Bean が見つからないかどうかを親ファクトリに確認します。
- パラメーター:
name
- 照会する Bean の名前- 戻り値:
- Bean の型、または判別できない場合は
null
- 例外:
NoSuchBeanDefinitionException
- 指定された名前の Bean がない場合- 導入:
- 1.1.2
- 関連事項:
getType
@Nullable ClassSE<?> getType(StringSE name, boolean allowFactoryBeanInit) throws NoSuchBeanDefinitionException 指定された名前の Bean の型を判別します。具体的には、指定された名前に対してgetBean(java.lang.String)
が返すオブジェクトの型を決定します。FactoryBean
の場合は、FactoryBean.getObjectType()
によって公開されている、FactoryBean が作成するオブジェクトの型を返します。allowFactoryBeanInit
フラグによっては、初期の型情報が利用できない場合、以前に初期化されていないFactoryBean
が初期化される可能性があります。エイリアスを対応する正規の Bean 名に変換します。
このファクトリインスタンスで Bean が見つからないかどうかを親ファクトリに確認します。
- パラメーター:
name
- 照会する Bean の名前allowFactoryBeanInit
-FactoryBean
がオブジェクト型を判別する目的でのみ初期化されるかどうか- 戻り値:
- Bean の型、または判別できない場合は
null
- 例外:
NoSuchBeanDefinitionException
- 指定された名前の Bean がない場合- 導入:
- 5.2
- 関連事項:
getAliases
存在する場合、指定された Bean 名のエイリアスを返します。これらのエイリアスはすべて、
getBean(java.lang.String)
呼び出しで使用される場合、同じ Bean を指します。指定された名前がエイリアスの場合、対応する元の Bean 名と他のエイリアス(存在する場合)が返され、元の Bean 名が配列の最初の要素になります。
このファクトリインスタンスで Bean が見つからないかどうかを親ファクトリに確認します。
- パラメーター:
name
- エイリアスをチェックする Bean 名- 戻り値:
- エイリアス、または存在しない場合は空の配列
- 関連事項: