org.springframework.aop.TargetSource that lazily accesses a
singleton bean from a
org.springframework.beans.factory.BeanFactory .
Useful when a proxy reference is needed on initialization but
the actual target object should not be initialized until first use.
When the target bean is defined in an
org.springframework.context.ApplicationContext (or a
BeanFactory that is eagerly pre-instantiating singleton beans)
it must be marked as "lazy-init" too, else it will be instantiated by said
ApplicationContext (or BeanFactory ) on startup.
For example:
<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>
The "serviceTarget" bean will not get initialized until a method on the
"service" proxy gets invoked.
Subclasses can extend this class and override the
LazyInitTargetSource.postProcessTargetObject(Object) to
perform some additional processing with the target object when it is first loaded.
author: Juergen Hoeller author: Rob Harrop since: 1.1.4 See Also: org.springframework.beans.factory.BeanFactory.getBean See Also: LazyInitTargetSource.postProcessTargetObject |