T
- Bean 型 public abstract class AbstractFactoryBean<T> extends ObjectSE implements FactoryBean<T>, BeanClassLoaderAware, BeanFactoryAware, InitializingBean, DisposableBean
FactoryBean
実装の単純なテンプレートスーパークラス。「シングルトン」フラグが true
(デフォルト)の場合、このクラスは、初期化時に 1 回だけ作成するオブジェクトを作成し、その後、getObject()
メソッドへのすべての呼び出しで上記のシングルトンインスタンスを返します。
そうでない場合、このクラスは getObject()
メソッドが呼び出されるたびに新しいインスタンスを作成します。サブクラスは、抽象 createInstance()
テンプレートメソッドを実装して、公開するオブジェクトを実際に作成します。
setSingleton(boolean)
, createInstance()
コンストラクターと説明 |
---|
AbstractFactoryBean() |
修飾子と型 | メソッドと説明 |
---|---|
void | afterPropertiesSet() 必要に応じて、シングルトンインスタンスを積極的に作成します。 |
protected abstract T | createInstance() このファクトリによって返されるオブジェクトを構築するためにサブクラスがオーバーライドする必要があるテンプレートメソッド。 |
void | destroy() シングルトンインスタンスを破棄します(ある場合)。 |
protected void | destroyInstance(T instance) シングルトンインスタンスを破棄するためのコールバック。 |
protected BeanFactory | getBeanFactory() この Bean が実行される BeanFactory を返します。 |
protected TypeConverter | getBeanTypeConverter() この Bean が実行される BeanFactory から Bean 型のコンバーターを取得します。 |
protected ClassSE<?>[] | getEarlySingletonInterfaces() 循環参照の場合に公開される「初期シングルトンプロキシ」で使用するために、この FactoryBean によって公開されるシングルトンオブジェクトが実装することになっているインターフェースの配列を返します。 |
T | getObject() シングルトンインスタンスを公開するか、新しいプロトタイプインスタンスを作成します。 |
abstract ClassSE<?> | getObjectType() この抽象メソッドの宣言は、FactoryBean インターフェースのメソッドを反映しており、抽象テンプレートメソッドを一貫して提供します。 |
boolean | isSingleton() このファクトリによって管理されるオブジェクトはシングルトンですか? つまり、 FactoryBean.getObject() は常に同じオブジェクト(キャッシュ可能な参照)を返しますか? |
void | setBeanClassLoader(ClassLoaderSE classLoader) Bean class loader SE を Bean インスタンスに提供するコールバック。 |
void | setBeanFactory(BeanFactory beanFactory) 所有ファクトリを Bean インスタンスに提供するコールバック。 |
void | setSingleton(boolean singleton) シングルトンを作成するかどうかを設定します。それ以外の場合は、リクエストごとに新しいオブジェクトを作成します。 |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
protected final Log logger
public void setSingleton(boolean singleton)
true
(シングルトン)です。public boolean isSingleton()
FactoryBean
FactoryBean.getObject()
は常に同じオブジェクト(キャッシュ可能な参照)を返しますか? 注意 : FactoryBean がシングルトンオブジェクトを保持することを示す場合、getObject()
から返されたオブジェクトは所有 BeanFactory によってキャッシュされる可能性があります。FactoryBean が常に同じ参照を公開しない限り、true
を返さないでください。
FactoryBean 自体のシングルトンステータスは、通常、所有する BeanFactory によって提供されます。通常、そこではシングルトンとして定義する必要があります。
注意 : false
を返すこのメソッドは、返されるオブジェクトが独立したインスタンスであることを必ずしも示しません。拡張 SmartFactoryBean
インターフェースの実装は、SmartFactoryBean.isPrototype()
メソッドを通じて独立したインスタンスを明示的に示す場合があります。この拡張インターフェースを実装しないプレーンな FactoryBean
実装は、isSingleton()
実装が false
を返す場合、常に独立したインスタンスを返すと単純に想定されます。
FactoryBean
は通常シングルトンインスタンスを管理するため、デフォルトの実装では true
が返されます。
FactoryBean<T>
の isSingleton
FactoryBean.getObject()
, SmartFactoryBean.isPrototype()
public void setBeanClassLoader(ClassLoaderSE classLoader)
BeanClassLoaderAware
class loader
SE を Bean インスタンスに提供するコールバック。 通常の Bean プロパティの設定後、ただし InitializingBean's
InitializingBean.afterPropertiesSet()
メソッドやカスタム init-method などの初期化コールバックの前に呼び出されます。
BeanClassLoaderAware
の setBeanClassLoader
classLoader
- 所有クラスローダー public void setBeanFactory(@Nullable BeanFactory beanFactory)
BeanFactoryAware
通常の Bean プロパティの設定後、ただし InitializingBean.afterPropertiesSet()
またはカスタム init-method などの初期化コールバックの前に呼び出されます。
BeanFactoryAware
の setBeanFactory
beanFactory
- 所有 BeanFactory(非 null
)。Bean は、ファクトリのメソッドをすぐに呼び出すことができます。BeanInitializationException
@Nullable protected BeanFactory getBeanFactory()
protected TypeConverter getBeanTypeConverter()
BeanFactory で実行されていない場合、SimpleTypeConverter にフォールバックします。
public void afterPropertiesSet() throws ExceptionSE
InitializingBean
の afterPropertiesSet
ExceptionSE
- 構成の誤り(必須プロパティの設定の失敗など)の場合、またはその他の理由で初期化が失敗した場合 public final T getObject() throws ExceptionSE
FactoryBean<T>
の getObject
null
にすることができます)ExceptionSE
- 作成エラーの場合 createInstance()
, getEarlySingletonInterfaces()
public void destroy() throws ExceptionSE
DisposableBean
の destroy
ExceptionSE
- シャットダウンエラーの場合。例外はログに記録されますが、再スローされず、他の Bean もリソースを解放できます。destroyInstance(Object)
@Nullable public abstract ClassSE<?> getObjectType()
FactoryBean<T>
の getObjectType
null
FactoryBean.getObjectType()
protected abstract T createInstance() throws ExceptionSE
シングルトンの場合はこの FactoryBean の初期化時に呼び出され、そうでない場合は各 getObject()
コール時に呼び出されます。
ExceptionSE
- オブジェクトの作成中に例外が発生した場合 getObject()
@Nullable protected ClassSE<?>[] getEarlySingletonInterfaces()
デフォルトの実装は、インターフェースである場合はこの FactoryBean のオブジェクト型を返し、そうでない場合は null
を返します。後者は、初期のシングルトンアクセスがこの FactoryBean ではサポートされていないことを示しています。これにより、FactoryBeanNotInitializedException がスローされます。
null
FactoryBeanNotInitializedException
protected void destroyInstance(@Nullable T instance) throws ExceptionSE
デフォルトの実装は空です。
instance
- createInstance()
によって返されるシングルトンインスタンス ExceptionSE
- シャットダウンエラーの場合 createInstance()