org.springframework.aop.target
Class AbstractPrototypeBasedTargetSource

java.lang.Object
  extended by org.springframework.aop.target.AbstractBeanFactoryBasedTargetSource
      extended by org.springframework.aop.target.AbstractPrototypeBasedTargetSource
All Implemented Interfaces:
Serializable, TargetClassAware, TargetSource, BeanFactoryAware
Direct Known Subclasses:
AbstractPoolingTargetSource, PrototypeTargetSource, ThreadLocalTargetSource

public abstract class AbstractPrototypeBasedTargetSource
extends AbstractBeanFactoryBasedTargetSource

Base class for dynamic TargetSource implementations that create new prototype bean instances to support a pooling or new-instance-per-invocation strategy.

Such TargetSources must run in a BeanFactory, as it needs to call the getBean method to create a new prototype instance. Therefore, this base class extends AbstractBeanFactoryBasedTargetSource.

Author:
Rod Johnson, Juergen Hoeller
See Also:
BeanFactory.getBean(java.lang.String), PrototypeTargetSource, ThreadLocalTargetSource, CommonsPoolTargetSource, Serialized Form

Field Summary
 
Fields inherited from class org.springframework.aop.target.AbstractBeanFactoryBasedTargetSource
logger
 
Constructor Summary
AbstractPrototypeBasedTargetSource()
           
 
Method Summary
protected  void destroyPrototypeInstance(Object target)
          Subclasses should call this method to destroy an obsolete prototype instance.
protected  Object newPrototypeInstance()
          Subclasses should call this method to create a new prototype instance.
 void setBeanFactory(BeanFactory beanFactory)
          Set the owning BeanFactory.
protected  Object writeReplace()
          Replaces this object with a SingletonTargetSource on serialization.
 
Methods inherited from class org.springframework.aop.target.AbstractBeanFactoryBasedTargetSource
copyFrom, equals, getBeanFactory, getTargetBeanName, getTargetClass, hashCode, isStatic, releaseTarget, setTargetBeanName, setTargetClass, toString
 
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

AbstractPrototypeBasedTargetSource

public AbstractPrototypeBasedTargetSource()
Method Detail

setBeanFactory

public void setBeanFactory(BeanFactory beanFactory)
                    throws BeansException
Description copied from class: AbstractBeanFactoryBasedTargetSource
Set the owning BeanFactory. We need to save a reference so that we can use the getBean method on every invocation.

Specified by:
setBeanFactory in interface BeanFactoryAware
Overrides:
setBeanFactory in class AbstractBeanFactoryBasedTargetSource
Parameters:
beanFactory - owning BeanFactory (never null). The bean can immediately call methods on the factory.
Throws:
BeansException - in case of initialization errors
See Also:
BeanInitializationException

newPrototypeInstance

protected Object newPrototypeInstance()
                               throws BeansException
Subclasses should call this method to create a new prototype instance.

Throws:
BeansException - if bean creation failed

destroyPrototypeInstance

protected void destroyPrototypeInstance(Object target)
Subclasses should call this method to destroy an obsolete prototype instance.

Parameters:
target - the bean instance to destroy

writeReplace

protected Object writeReplace()
                       throws ObjectStreamException
Replaces this object with a SingletonTargetSource on serialization. Protected as otherwise it won't be invoked for subclasses. (The writeReplace() method must be visible to the class being serialized.)

With this implementation of this method, there is no need to mark non-serializable fields in this class or subclasses as transient.

Throws:
ObjectStreamException