インターフェース 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 StringSE
BeanDefinition
で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
が返されます。- 戻り値:
- 公開されたオブジェクトがシングルトンかどうか
- 関連事項: