インターフェース FactoryBean<T>
- 型パラメーター:
T- Bean 型
- すべての既知のサブインターフェース:
SmartFactoryBean<T>
- すべての既知の実装クラス:
AbstractEntityManagerFactoryBean、AbstractFactoryBean、AbstractServiceLoaderBasedFactoryBean、AbstractSingletonProxyFactoryBean、CacheProxyFactoryBean、ConcurrentMapCacheFactoryBean、ConnectorServerFactoryBean、ContentNegotiationManagerFactoryBean、ConversionServiceFactoryBean、CronTriggerFactoryBean、DateTimeFormatterFactoryBean、EmbeddedDatabaseFactoryBean、FieldRetrievingFactoryBean、ForkJoinPoolFactoryBean、FormattingConversionServiceFactoryBean、FreeMarkerConfigurationFactoryBean、GsonFactoryBean、Jackson2ObjectMapperFactoryBean、JCacheManagerFactoryBean、JndiObjectFactoryBean、JobDetailFactoryBean、JtaTransactionManagerFactoryBean、ListFactoryBean、LocalConnectionFactoryBean、LocalContainerEntityManagerFactoryBean、LocalEntityManagerFactoryBean、LocalSessionFactoryBean、MapFactoryBean、MBeanProxyFactoryBean、MBeanServerConnectionFactoryBean、MBeanServerFactoryBean、MethodInvokingFactoryBean、MethodInvokingJobDetailFactoryBean、MethodLocatingFactoryBean、ObjectFactoryCreatingFactoryBean、PropertiesFactoryBean、PropertyPathFactoryBean、ProviderCreatingFactoryBean、ProxyFactoryBean、ProxyFactoryBean、ResourceAdapterFactoryBean、ScheduledExecutorFactoryBean、SchedulerFactoryBean、ScopedProxyFactoryBean、ServiceFactoryBean、ServiceListFactoryBean、ServiceLoaderFactoryBean、ServiceLocatorFactoryBean、ServletContextAttributeFactoryBean、ServletContextParameterFactoryBean、ServletServerContainerFactoryBean、SetFactoryBean、SharedEntityManagerBean、SimpleTriggerFactoryBean、SortedResourcesFactoryBean、TaskExecutorFactoryBean、ThreadPoolExecutorFactoryBean、TransactionProxyFactoryBean、WebSocketContainerFactoryBean、YamlMapFactoryBean、YamlPropertiesFactoryBean
BeanFactory 内で使用されるオブジェクトによって実装されるインターフェースで、それ自体が個々のオブジェクトのファクトリです。Bean がこのインターフェースを実装する場合、それ自体が公開される Bean インスタンスとして直接ではなく、公開するオブジェクトのファクトリとして使用されます。 注: このインターフェースを実装する Bean は、通常の Bean として使用できません。FactoryBean は Bean スタイルで定義されていますが、Bean 参照用に公開されているオブジェクト(getObject())は常に作成するオブジェクトです。
FactoryBeans はシングルトンとプロトタイプをサポートでき、要求に応じて遅延的にオブジェクトを作成したり、起動時に先行してオブジェクトを作成したりできます。SmartFactoryBean インターフェースにより、よりきめ細かい動作メタデータを公開できます。
このインターフェースは、AOP ProxyFactoryBean や JndiObjectFactoryBean など、フレームワーク自体で頻繁に使用されます。カスタムコンポーネントにも使用できます。ただし、これはインフラストラクチャコードでのみ一般的です。
FactoryBean はプログラムによる契約です。実装は、アノテーション駆動型の注入やその他のリフレクション機能に依存しないことになっています。getObjectType() および getObject() の呼び出しは、ポストプロセッサーのセットアップよりも前であっても、ブートストラッププロセスの早い段階で行われる場合があります。他の Bean にアクセスする必要がある場合は、BeanFactoryAware を実装してプログラムで取得します。
コンテナーは、FactoryBean によって作成されたオブジェクトのライフサイクルではなく、FactoryBean インスタンスのライフサイクルの管理のみを担当します。公開された Bean オブジェクト(Closeable.close() など)の destroy メソッドは自動的に呼び出されません。代わりに、FactoryBean は DisposableBean を実装し、そのような近接呼び出しを基になるオブジェクトに委譲する必要があります。
最後に、FactoryBean オブジェクトは、それを含む BeanFactory の Bean 作成の同期に参加します。FactoryBean 自体 (または同様のもの) 内での遅延初期化の目的以外では、通常は内部同期は必要ありません。
- 導入:
- 08.03.2003
- 作成者:
- Rod Johnson, Juergen Hoeller
- 関連事項:
フィールドのサマリー
フィールド修飾子と型フィールド説明static final StringSEBeanDefinitionでsetにできる属性の名前。これにより、ファクトリ Bean クラスからオブジェクト型を推測できない場合に、ファクトリ Bean がオブジェクト型を通知できるようになります。メソッドのサマリー
修飾子と型メソッド説明このファクトリによって管理されるオブジェクトのインスタンス(おそらく共有または独立)を返します。ClassSE<?>この FactoryBean が作成するオブジェクトの型を返します。事前にわからない場合はnullを返します。default booleanこのファクトリによって管理されるオブジェクトはシングルトンですか? つまり、getObject()は常に同じオブジェクト(キャッシュ可能な参照)を返しますか?
フィールドの詳細
OBJECT_TYPE_ATTRIBUTE
BeanDefinitionでsetにできる属性の名前。これにより、ファクトリ Bean クラスからオブジェクト型を推測できない場合に、ファクトリ Bean がオブジェクト型を通知できるようになります。- 導入:
- 5.2
- 関連事項:
メソッドの詳細
getObject
このファクトリによって管理されるオブジェクトのインスタンス(おそらく共有または独立)を返します。BeanFactoryと同様に、これにより、シングルトンとプロトタイプの両方の設計パターンをサポートできます。この FactoryBean が呼び出し時にまだ完全に初期化されていない場合(たとえば、循環参照に関係しているため)、対応する
FactoryBeanNotInitializedExceptionをスローします。FactoryBeans は
nullオブジェクトを返すことができます。Bean ファクトリはこれを通常の値と見なし、この場合はFactoryBeanNotInitializedExceptionをスローしません。ただし、FactoryBean 実装では、必要に応じてFactoryBeanNotInitializedException自体をスローすることが推奨されます。- 戻り値:
- Bean のインスタンス (
nullにすることができます) - 例外:
ExceptionSE- 作成エラーの場合- 関連事項:
getObjectType
この FactoryBean が作成するオブジェクトの型を返します。事前にわからない場合はnullを返します。これにより、たとえばオートワイヤーなどで、オブジェクトをインスタンス化せずに特定の型の Bean を確認できます。
シングルトンオブジェクトを作成する実装の場合、このメソッドはシングルトンの作成を可能な限り回避し、事前に型を推定する必要があります。プロトタイプの場合は、ここで意味のある型を返すことも推奨されます。
このメソッドは、この FactoryBean が完全に初期化される前に呼び出すことができます。初期化中に作成された状態に依存しないでください。もちろん、利用可能な場合はそのような状態を引き続き使用できます。
注意 : オートワイヤーは、ここで
nullを返す FactoryBeans を単に無視します。FactoryBean の現在の状態を使用して、このメソッドを適切に実装することを強くお勧めします。- 戻り値:
- この FactoryBean が作成するオブジェクトの型、または呼び出し時に不明な場合は
null - 関連事項:
isSingleton
default boolean isSingleton()このファクトリによって管理されるオブジェクトはシングルトンですか? つまり、getObject()は常に同じオブジェクト(キャッシュ可能な参照)を返しますか?注意 : FactoryBean がシングルトンオブジェクトを保持していることを示している場合、
getObject()から返されたオブジェクトは、所有する BeanFactory によってキャッシュされる可能性があります。FactoryBean が常に同じ参照を公開しない限り、trueを返さないでください。FactoryBean 自体のシングルトンステータスは、通常、所有する BeanFactory によって提供されます。通常、そこではシングルトンとして定義する必要があります。
注意 :
falseを返すこのメソッドは、返されるオブジェクトが独立したインスタンスであることを必ずしも示しません。拡張SmartFactoryBeanインターフェースの実装は、SmartFactoryBean.isPrototype()メソッドを通じて独立したインスタンスを明示的に示す場合があります。この拡張インターフェースを実装しないプレーンなFactoryBean実装は、isSingleton()実装がfalseを返す場合、常に独立したインスタンスを返すと単純に想定されます。FactoryBeanは通常シングルトンインスタンスを管理するため、デフォルトの実装ではtrueが返されます。- 戻り値:
- 公開されたオブジェクトがシングルトンかどうか
- 関連事項: