Class AbstractBeanFactoryBasedTargetSource
- java.lang.Object
- org.springframework.aop.target.AbstractBeanFactoryBasedTargetSource
- All Implemented Interfaces:
Serializable,TargetClassAware,TargetSource,Aware,BeanFactoryAware
- Direct Known Subclasses:
AbstractPrototypeBasedTargetSource,LazyInitTargetSource,SimpleBeanTargetSource
public abstract class AbstractBeanFactoryBasedTargetSource extends Object implements TargetSource, BeanFactoryAware, Serializable
Base class forTargetSourceimplementations that are based on a SpringBeanFactory, delegating to Spring-managed bean instances.Subclasses can create prototype instances or lazily access a singleton target, for example. See
LazyInitTargetSourceandAbstractPrototypeBasedTargetSource's subclasses for concrete strategies.BeanFactory-based TargetSources are serializable. This involves disconnecting the current target and turning into a
SingletonTargetSource.- Since:
- 1.1.4
- Author:
- Juergen Hoeller, Rod Johnson
- See Also:
BeanFactory.getBean(java.lang.String),LazyInitTargetSource,PrototypeTargetSource,ThreadLocalTargetSource,CommonsPool2TargetSource, Serialized Form
Constructor Summary
Constructors Constructor Description AbstractBeanFactoryBasedTargetSource()
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidcopyFrom(AbstractBeanFactoryBasedTargetSource other)Copy configuration from the other AbstractBeanFactoryBasedTargetSource object.booleanequals(Object other)BeanFactorygetBeanFactory()Return the owning BeanFactory.StringgetTargetBeanName()Return the name of the target bean in the factory.Class<?>getTargetClass()Return the type of targets returned by thisTargetSource.inthashCode()booleanisStatic()Will all calls toTargetSource.getTarget()return the same object?voidreleaseTarget(Object target)Release the given target object obtained from theTargetSource.getTarget()method, if any.voidsetBeanFactory(BeanFactory beanFactory)Set the owning BeanFactory.voidsetTargetBeanName(String targetBeanName)Set the name of the target bean in the factory.voidsetTargetClass(Class<?> targetClass)Specify the target class explicitly, to avoid any kind of access to the target bean (for example, to avoid initialization of a FactoryBean instance).StringtoString()Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.springframework.aop.TargetSource
getTarget
Constructor Detail
AbstractBeanFactoryBasedTargetSource
public AbstractBeanFactoryBasedTargetSource()
Method Detail
setTargetBeanName
public void setTargetBeanName(String targetBeanName)
Set the name of the target bean in the factory.The target bean should not be a singleton, else the same instance will always be obtained from the factory, resulting in the same behavior as provided by
SingletonTargetSource.- Parameters:
targetBeanName- name of the target bean in the BeanFactory that owns this interceptor- See Also:
SingletonTargetSource
getTargetBeanName
public String getTargetBeanName()
Return the name of the target bean in the factory.
setTargetClass
public void setTargetClass(Class<?> targetClass)
Specify the target class explicitly, to avoid any kind of access to the target bean (for example, to avoid initialization of a FactoryBean instance).Default is to detect the type automatically, through a
getTypecall on the BeanFactory (or even a fullgetBeancall as fallback).
setBeanFactory
public void setBeanFactory(BeanFactory beanFactory)
Set the owning BeanFactory. We need to save a reference so that we can use thegetBeanmethod on every invocation.- Specified by:
setBeanFactoryin interfaceBeanFactoryAware- Parameters:
beanFactory- owning BeanFactory (nevernull). The bean can immediately call methods on the factory.- See Also:
BeanInitializationException
getBeanFactory
public BeanFactory getBeanFactory()
Return the owning BeanFactory.
getTargetClass
public Class<?> getTargetClass()
Description copied from interface:TargetSourceReturn the type of targets returned by thisTargetSource.Can return
null, although certain usages of aTargetSourcemight just work with a predetermined target class.- Specified by:
getTargetClassin interfaceTargetClassAware- Specified by:
getTargetClassin interfaceTargetSource- Returns:
- the type of targets returned by this
TargetSource
isStatic
public boolean isStatic()
Description copied from interface:TargetSourceWill all calls toTargetSource.getTarget()return the same object?In that case, there will be no need to invoke
TargetSource.releaseTarget(Object), and the AOP framework can cache the return value ofTargetSource.getTarget().- Specified by:
isStaticin interfaceTargetSource- Returns:
trueif the target is immutable- See Also:
TargetSource.getTarget()
releaseTarget
public void releaseTarget(Object target) throws Exception
Description copied from interface:TargetSourceRelease the given target object obtained from theTargetSource.getTarget()method, if any.- Specified by:
releaseTargetin interfaceTargetSource- Parameters:
target- object obtained from a call toTargetSource.getTarget()- Throws:
Exception- if the object can't be released
copyFrom
protected void copyFrom(AbstractBeanFactoryBasedTargetSource other)
Copy configuration from the other AbstractBeanFactoryBasedTargetSource object. Subclasses should override this if they wish to expose it.- Parameters:
other- object to copy configuration from