public abstract class AbstractPoolingTargetSource extends AbstractPrototypeBasedTargetSource implements PoolingConfig, DisposableBean
TargetSourceimplementations which maintain a pool of target instances, acquiring and releasing a target object from the pool for each method invocation. This abstract base class is independent of concrete pooling technology; see the subclass
CommonsPool2TargetSourcefor a concrete example.
Subclasses must implement the
releaseTarget(java.lang.Object) methods based on their chosen object pool.
AbstractPrototypeBasedTargetSource.newPrototypeInstance() method inherited from
AbstractPrototypeBasedTargetSource can be used to create objects
in order to put them into the pool.
Subclasses must also implement some of the monitoring methods from the
PoolingConfig interface. The
makes these stats available on proxied objects through an IntroductionAdvisor.
This class implements the
interface in order to force subclasses to implement a
method, closing down their object pool.
DisposableBean.destroy(), Serialized Form
|Constructor and Description|
|Modifier and Type||Method and Description|
Create the pool.
Return the maximum size of the pool.
Return an IntroductionAdvisor that provides a mixin exposing statistics about the pool maintained by this object.
Acquire an object from the pool.
Return the given object to the pool.
Set the owning BeanFactory.
Set the maximum size of the pool.
destroyPrototypeInstance, newPrototypeInstance, writeReplace
copyFrom, equals, getBeanFactory, getTargetBeanName, getTargetClass, hashCode, isStatic, setTargetBeanName, setTargetClass, toString
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
public void setMaxSize(int maxSize)
public int getMaxSize()
public final void setBeanFactory(BeanFactory beanFactory) throws BeansException
getBeanmethod on every invocation.
beanFactory- owning BeanFactory (never
null). The bean can immediately call methods on the factory.
BeansException- in case of initialization errors
protected abstract void createPool() throws Exception
Exception- to avoid placing constraints on pooling APIs
@Nullable public abstract Object getTarget() throws Exception
Exception- we may need to deal with checked exceptions from pool APIs, so we're forgiving with our exception signature
public abstract void releaseTarget(Object target) throws Exception
target- object that must have been acquired from the pool via a call to
Exception- to allow pooling APIs to throw exception
public DefaultIntroductionAdvisor getPoolingConfigMixin()