public class LazyInitTargetSourceCreator extends AbstractBeanFactoryBasedTargetSourceCreator
TargetSourceCreator that enforces a LazyInitTargetSource for
each bean that is defined as "lazy-init". This will lead to a proxy created for
each of those beans, allowing to fetch a reference to such a bean without
actually initializing the target bean instance.
To be registered as custom TargetSourceCreator for an auto-proxy
creator, in combination with custom interceptors for specific beans or for the
creation of lazy-init proxies only. For example, as an autodetected
infrastructure bean in an XML application context definition:
<bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames" value="*" /> <!-- apply to all beans -->
<property name="customTargetSourceCreators">
<list>
<bean class="org.springframework.aop.framework.autoproxy.target.LazyInitTargetSourceCreator" />
</list>
</property>
</bean>
<bean id="myLazyInitBean" class="mypackage.MyBeanClass" lazy-init="true">
<!-- ... -->
</bean>BeanDefinition.isLazyInit(),
AbstractAutoProxyCreator.setCustomTargetSourceCreators(org.springframework.aop.framework.autoproxy.TargetSourceCreator...),
BeanNameAutoProxyCreatorlogger| Constructor and Description |
|---|
LazyInitTargetSourceCreator() |
| Modifier and Type | Method and Description |
|---|---|
protected AbstractBeanFactoryBasedTargetSource |
createBeanFactoryBasedTargetSource(Class<?> beanClass,
String beanName)
Subclasses must implement this method to return a new AbstractPrototypeBasedTargetSource
if they wish to create a custom TargetSource for this bean, or
null if they are
not interested it in, in which case no special target source will be created. |
protected boolean |
isPrototypeBased()
Return whether this TargetSourceCreator is prototype-based.
|
buildInternalBeanFactory, destroy, getBeanFactory, getInternalBeanFactoryForBean, getTargetSource, setBeanFactoryprotected boolean isPrototypeBased()
AbstractBeanFactoryBasedTargetSourceCreatorDefault is "true".
isPrototypeBased in class AbstractBeanFactoryBasedTargetSourceCreatorBeanDefinition.isSingleton()@Nullable protected AbstractBeanFactoryBasedTargetSource createBeanFactoryBasedTargetSource(Class<?> beanClass, String beanName)
AbstractBeanFactoryBasedTargetSourceCreatornull if they are
not interested it in, in which case no special target source will be created.
Subclasses should not call setTargetBeanName or setBeanFactory
on the AbstractPrototypeBasedTargetSource: This class' implementation of
getTargetSource() will do that.createBeanFactoryBasedTargetSource in class AbstractBeanFactoryBasedTargetSourceCreatorbeanClass - the class of the bean to create a TargetSource forbeanName - the name of the beannull if we don't match this