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, toStringcloneSE, finalizeSE, getClassSE, notifySE, notifyAllSE, waitSE, waitSE, waitSE@Nullable public ObjectSE getTarget() throws BeansException
TargetSourcenull BeansExceptionprotected void postProcessTargetObject(ObjectSE targetObject)
targetObject - インスタンス化されたばかりのターゲットオブジェクト (そして構成された)