T - Bean 型 public interface SmartFactoryBean<T> extends FactoryBean<T>
FactoryBean インターフェースの拡張。false を返す FactoryBean.isSingleton() 実装が独立したインスタンスを明確に示さない場合のために、実装は常に独立したインスタンスを返すかどうかを示す場合があります。 この拡張インターフェースを実装しないプレーンな FactoryBean 実装は、FactoryBean.isSingleton() 実装が false を返す場合、常に独立したインスタンスを返すと単純に想定されています。公開されたオブジェクトは、オンデマンドでのみアクセスされます。
注意 : このインターフェースは、主にフレームワーク内およびコラボレーションフレームワーク内での内部使用のための特別な目的のインターフェースです。一般に、アプリケーションが提供する FactoryBeans は、単純な FactoryBean インターフェースを実装するだけです。ポイントリリースでも、この拡張インターフェースに新しいメソッドが追加される場合があります。
isPrototype(), FactoryBean.isSingleton()OBJECT_TYPE_ATTRIBUTE| 修飾子と型 | メソッドと説明 |
|---|---|
default boolean | isEagerInit() この FactoryBean は先行初期化を期待していますか? つまり、それ自体を先行初期化すると同時に、そのシングルトンオブジェクト(存在する場合)の先行初期化を期待していますか? |
default boolean | isPrototype() このファクトリによって管理されるオブジェクトはプロトタイプですか? つまり、 FactoryBean.getObject() は常に独立したインスタンスを返しますか? |
getObject, getObjectType, isSingletondefault boolean isPrototype()
FactoryBean.getObject() は常に独立したインスタンスを返しますか? FactoryBean 自体のプロトタイプステータスは、通常、所有する BeanFactory によって提供されます。通常は、シングルトンとして定義する必要があります。
このメソッドは、独立したインスタンスを厳密にチェックすることになっています。スコープオブジェクトまたは他の種類の非シングルトン、非独立オブジェクトの true を返しません。このため、これは単に FactoryBean.isSingleton() の反転形式ではありません。
デフォルトの実装は false を返します。
FactoryBean.getObject(), FactoryBean.isSingleton()default boolean isEagerInit()
標準の FactoryBean は先行初期化されることは期待されていません。その FactoryBean.getObject() は、シングルトンオブジェクトの場合でも、実際のアクセスのためにのみ呼び出されます。このメソッドから true を返すことは、FactoryBean.getObject() を積極的に呼び出し、ポストプロセッサーを積極的に適用する必要があることを提案しています。これは、singleton オブジェクトの場合、特に起動時にポストプロセッサーが適用されることを期待している場合に意味があります。
デフォルトの実装は false を返します。
ConfigurableListableBeanFactory.preInstantiateSingletons()