public class LazyInitTargetSource extends AbstractBeanFactoryBasedTargetSource
BeanFactory
からシングルトン Bean に遅延アクセスする TargetSource
。 初期化時にプロキシリファレンスが必要ですが、実際のターゲットオブジェクトは最初に使用するまで初期化しない場合に便利です。ターゲット Bean が ApplicationContext
(BeanFactory
は、先行してシングルトン Bean のインスタンス化を事前に行っています) で定義されている場合は、"lazy-init" とマークされている必要があります。マークされていない場合は、起動時に前述の ApplicationContext
(または BeanFactory
) によってインスタンス化されます。
例:
<bean id="serviceTarget" class="example.MyService" lazy-init="true"> ... </bean> <bean id="service" class="org.springframework.aop.framework.ProxyFactoryBean"> <property name="targetSource"> <bean class="org.springframework.aop.target.LazyInitTargetSource"> <property name="targetBeanName"><idref local="serviceTarget"/></property> </bean> </property> </bean>"serviceTarget" Bean は、「サービス」プロキシのメソッドが呼び出されるまで初期化されません。
サブクラスはこのクラスを継承し、postProcessTargetObject(Object)
をオーバーライドして、ターゲットオブジェクトが最初にロードされたときに追加の処理を実行できます。
BeanFactory.getBean(java.lang.String)
, postProcessTargetObject(java.lang.Object)
, 直列化された形式 logger
コンストラクターと説明 |
---|
LazyInitTargetSource() |
修飾子と型 | メソッドと説明 |
---|---|
ObjectSE | getTarget() ターゲットインスタンスを返します。 |
protected void | postProcessTargetObject(ObjectSE targetObject) サブクラスはこのメソッドをオーバーライドして、最初にロードされたときにターゲットオブジェクトに対して追加の処理を実行できます。 |
copyFrom, equals, getBeanFactory, getTargetBeanName, getTargetClass, hashCode, isStatic, releaseTarget, setBeanFactory, setTargetBeanName, setTargetClass, toString
cloneSE, finalizeSE, getClassSE, notifySE, notifyAllSE, waitSE, waitSE, waitSE
@Nullable public ObjectSE getTarget() throws BeansException
TargetSource
null
BeansException
protected void postProcessTargetObject(ObjectSE targetObject)
targetObject
- インスタンス化されたばかりのターゲットオブジェクト (そして構成された)