public abstract class

AbstractBeanFactoryBasedTargetSourceCreator

extends Object
implements TargetSourceCreator BeanFactoryAware DisposableBean
java.lang.Object
   ↳ org.springframework.aop.framework.autoproxy.target.AbstractBeanFactoryBasedTargetSourceCreator
Known Direct Subclasses

Class Overview

Convenient superclass for TargetSourceCreator implementations that require creating multiple instances of a prototype bean.

Uses an internal BeanFactory to manage the target instances, copying the original bean definition to this internal factory. This is necessary because the original BeanFactory will just contain the proxy instance created through auto-proxying.

Requires running in an AbstractBeanFactory.

Summary

Fields
protected final Log logger
Public Constructors
AbstractBeanFactoryBasedTargetSourceCreator()
Public Methods
void destroy()
Destroys the internal BeanFactory on shutdown of the TargetSourceCreator.
final TargetSource getTargetSource(Class<?> beanClass, String beanName)
Create a special TargetSource for the given bean, if any.
final void setBeanFactory(BeanFactory beanFactory)
Callback that supplies the owning factory to a bean instance.
Protected Methods
DefaultListableBeanFactory buildInternalBeanFactory(ConfigurableBeanFactory containingFactory)
Build an internal BeanFactory for resolving target beans.
abstract 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.
final BeanFactory getBeanFactory()
Return the BeanFactory that this TargetSourceCreators runs in.
DefaultListableBeanFactory getInternalBeanFactoryForBean(String beanName)
Return the internal BeanFactory to be used for the specified bean.
boolean isPrototypeBased()
Return whether this TargetSourceCreator is prototype-based.
[Expand]
Inherited Methods
From class java.lang.Object
From interface org.springframework.aop.framework.autoproxy.TargetSourceCreator
From interface org.springframework.beans.factory.BeanFactoryAware
From interface org.springframework.beans.factory.DisposableBean

Fields

protected final Log logger

Public Constructors

public AbstractBeanFactoryBasedTargetSourceCreator ()

Public Methods

public void destroy ()

Destroys the internal BeanFactory on shutdown of the TargetSourceCreator.

public final TargetSource getTargetSource (Class<?> beanClass, String beanName)

Create a special TargetSource for the given bean, if any.

Parameters
beanClass the class of the bean to create a TargetSource for
beanName the name of the bean
Returns
  • a special TargetSource or null if this TargetSourceCreator isn't interested in the particular bean

public final void setBeanFactory (BeanFactory beanFactory)

Callback that supplies the owning factory to a bean instance.

Invoked after the population of normal bean properties but before an initialization callback such as afterPropertiesSet() or a custom init-method.

Parameters
beanFactory owning BeanFactory (never null). The bean can immediately call methods on the factory.

Protected Methods

protected DefaultListableBeanFactory buildInternalBeanFactory (ConfigurableBeanFactory containingFactory)

Build an internal BeanFactory for resolving target beans.

Parameters
containingFactory the containing BeanFactory that originally defines the beans
Returns
  • an independent internal BeanFactory to hold copies of some target beans

protected abstract 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. Subclasses should not call setTargetBeanName or setBeanFactory on the AbstractPrototypeBasedTargetSource: This class' implementation of getTargetSource() will do that.

Parameters
beanClass the class of the bean to create a TargetSource for
beanName the name of the bean
Returns
  • the AbstractPrototypeBasedTargetSource, or null if we don't match this

protected final BeanFactory getBeanFactory ()

Return the BeanFactory that this TargetSourceCreators runs in.

protected DefaultListableBeanFactory getInternalBeanFactoryForBean (String beanName)

Return the internal BeanFactory to be used for the specified bean.

Parameters
beanName the name of the target bean
Returns
  • the internal BeanFactory to be used

protected boolean isPrototypeBased ()

Return whether this TargetSourceCreator is prototype-based. The scope of the target bean definition will be set accordingly.

Default is "true".

See Also