インターフェース 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 オブジェクトは、Bean 作成の BeanFactory の同期を含んでいます。通常、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
をスローします。Spring 2.0 以降、FactoryBeans は
null
オブジェクトを返すことができます。ファクトリはこれを通常の値として使用します。この場合、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
が返されます。- 戻り値:
- 公開されたオブジェクトがシングルトンかどうか
- 関連事項: