public abstract class AbstractSingletonProxyFactoryBean extends ProxyConfig implements FactoryBean<ObjectSE>, BeanClassLoaderAware, InitializingBean
FactoryBean
型の便利なスーパークラス。 インターセプターの前後を管理し(ProxyFactoryBean
のようなインターセプター名ではなく参照)、一貫したインターフェース管理を提供します。
OBJECT_TYPE_ATTRIBUTE
コンストラクターと説明 |
---|
AbstractSingletonProxyFactoryBean() |
修飾子と型 | メソッドと説明 |
---|---|
void | afterPropertiesSet() |
protected abstract ObjectSE | createMainInterceptor() このプロキシファクトリ Bean の「メイン」インターセプタを作成します。 |
protected TargetSource | createTargetSource(ObjectSE target) 指定されたターゲット(または TargetSource)の TargetSource を決定します。 |
ObjectSE | getObject() このファクトリによって管理されるオブジェクトのインスタンス(おそらく共有または独立)を返します。 |
ClassSE<?> | getObjectType() この FactoryBean が作成するオブジェクトの型、または事前に不明な場合は null を返します。 |
boolean | isSingleton() このファクトリによって管理されるオブジェクトはシングルトンですか? つまり、 FactoryBean.getObject() は常に同じオブジェクト(キャッシュ可能な参照)を返しますか? |
protected void | postProcessProxyFactory(ProxyFactory proxyFactory) サブクラスが ProxyFactory を使用してプロキシインスタンスを作成する前に後処理するためのフック。 |
void | setAdvisorAdapterRegistry(AdvisorAdapterRegistry advisorAdapterRegistry) 使用する AdvisorAdapterRegistry を指定します。 |
void | setBeanClassLoader(ClassLoaderSE classLoader) Bean class loader SE を Bean インスタンスに提供するコールバック。 |
void | setPostInterceptors(ObjectSE[] postInterceptors) 暗黙のトランザクションインターセプターの後に適用する追加のインターセプター(またはアドバイザー)を設定します。 |
void | setPreInterceptors(ObjectSE[] preInterceptors) 暗黙のトランザクションインターセプターの前に適用される追加のインターセプター(またはアドバイザー)を設定します。 |
void | setProxyClassLoader(ClassLoaderSE classLoader) ClassLoader を設定して、プロキシクラスを生成します。 |
void | setProxyInterfaces(ClassSE<?>[] proxyInterfaces) プロキシされるインターフェースのセットを指定します。 |
void | setTarget(ObjectSE target) ターゲットオブジェクト、つまりトランザクションプロキシでラップする Bean を設定します。 |
copyFrom, isExposeProxy, isFrozen, isOpaque, isOptimize, isProxyTargetClass, setExposeProxy, setFrozen, setOpaque, setOptimize, setProxyTargetClass, toString
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, waitSE, waitSE, waitSE
public void setTarget(ObjectSE target)
ターゲットはどのオブジェクトでもかまいません。その場合、SingletonTargetSource が作成されます。TargetSource の場合、ラッパー TargetSource は作成されません。これにより、プーリングやプロトタイプ TargetSource などの使用が可能になります。
public void setProxyInterfaces(ClassSE<?>[] proxyInterfaces)
指定されていない場合(デフォルト)、AOP インフラストラクチャは、ターゲットを分析して、ターゲットオブジェクトが実装するすべてのインターフェースをプロキシすることで、プロキシが必要なインターフェースを特定します。
public void setPreInterceptors(ObjectSE[] preInterceptors)
任意の AOP アライアンス MethodInterceptors または他の Spring AOP アドバイス、および Spring AOP アドバイザーを指定できます。
public void setPostInterceptors(ObjectSE[] postInterceptors)
任意の AOP アライアンス MethodInterceptors または他の Spring AOP アドバイス、および Spring AOP アドバイザーを指定できます。
public void setAdvisorAdapterRegistry(AdvisorAdapterRegistry advisorAdapterRegistry)
public void setProxyClassLoader(ClassLoaderSE classLoader)
デフォルトは Bean ClassLoader、つまり、すべての Bean クラスをロードするために、それを含む BeanFactory によって使用される ClassLoader です。これは、特定のプロキシに対してここでオーバーライドできます。
public void setBeanClassLoader(ClassLoaderSE classLoader)
BeanClassLoaderAware
class loader
SE を Bean インスタンスに提供するコールバック。 通常の Bean プロパティの設定後、ただし InitializingBean's
InitializingBean.afterPropertiesSet()
メソッドやカスタム init-method などの初期化コールバックの前に呼び出されます。
BeanClassLoaderAware
の setBeanClassLoader
classLoader
- 所有クラスローダー public void afterPropertiesSet()
InitializingBean
BeanFactoryAware
、ApplicationContextAware
などを満たした後、包含 BeanFactory
によって呼び出されます。このメソッドにより、Bean インスタンスは、すべての Bean プロパティが設定されたときに、その全体的な構成の検証と最終的な初期化を実行できます。
InitializingBean
の afterPropertiesSet
protected TargetSource createTargetSource(ObjectSE target)
target
- ゴール。これが TargetSource の実装である場合は、TargetSource として使用されます。それ以外の場合は、SingletonTargetSource でラップされます。protected void postProcessProxyFactory(ProxyFactory proxyFactory)
ProxyFactory
を使用してプロキシインスタンスを作成する前に後処理するためのフック。proxyFactory
- 使用される AOP ProxyFactorypublic ObjectSE getObject()
FactoryBean
BeanFactory
と同様に、これにより、シングルトンとプロトタイプの両方のデザインパターンをサポートできます。
この FactoryBean が呼び出し時にまだ完全に初期化されていない場合(たとえば、循環参照に関係しているため)、対応する FactoryBeanNotInitializedException
をスローします。
Spring 2.0 以降、FactoryBeans は null
オブジェクトを返すことができます。ファクトリはこれを通常の値として使用します。この場合、FactoryBeanNotInitializedException はスローされません。FactoryBean の実装では、必要に応じて FactoryBeanNotInitializedException 自体をすぐにスローすることをお勧めします。
FactoryBean<ObjectSE>
の getObject
null
にすることができます)FactoryBeanNotInitializedException
@Nullable public ClassSE<?> getObjectType()
FactoryBean
null
を返します。これにより、たとえばオートワイヤーなどで、オブジェクトをインスタンス化せずに特定の型の Bean を確認できます。
シングルトンオブジェクトを作成している実装の場合、このメソッドはシングルトンの作成を可能な限り回避しようとします。むしろ、事前に型を推定する必要があります。プロトタイプの場合、ここで意味のある型を返すこともお勧めします。
このメソッドは、この FactoryBean が完全に初期化される前に呼び出すことができます。初期化中に作成された状態に依存しないでください。もちろん、利用可能な場合はそのような状態を引き続き使用できます。
注意 : オートワイヤーは、ここで null
を返す FactoryBeans を単に無視します。FactoryBean の現在の状態を使用して、このメソッドを適切に実装することを強くお勧めします。
FactoryBean<ObjectSE>
の getObjectType
null
ListableBeanFactory.getBeansOfType(java.lang.Class<T>)
public final boolean isSingleton()
FactoryBean
FactoryBean.getObject()
は常に同じオブジェクト(キャッシュ可能な参照)を返しますか? 注意 : FactoryBean がシングルトンオブジェクトを保持することを示す場合、getObject()
から返されたオブジェクトは所有 BeanFactory によってキャッシュされる可能性があります。FactoryBean が常に同じ参照を公開しない限り、true
を返さないでください。
FactoryBean 自体のシングルトンステータスは、通常、所有する BeanFactory によって提供されます。通常、そこではシングルトンとして定義する必要があります。
注意 : false
を返すこのメソッドは、返されるオブジェクトが独立したインスタンスであることを必ずしも示しません。拡張 SmartFactoryBean
インターフェースの実装は、SmartFactoryBean.isPrototype()
メソッドを通じて独立したインスタンスを明示的に示す場合があります。この拡張インターフェースを実装しないプレーンな FactoryBean
実装は、isSingleton()
実装が false
を返す場合、常に独立したインスタンスを返すと単純に想定されます。
FactoryBean
は通常シングルトンインスタンスを管理するため、デフォルトの実装では true
が返されます。
FactoryBean<ObjectSE>
の isSingleton
FactoryBean.getObject()
, SmartFactoryBean.isPrototype()
protected abstract ObjectSE createMainInterceptor()
事前インターセプターは前に適用され、リアクティブインターセプターはこのインターセプターの後に適用されます。