public abstract class

AbstractPoolingTargetSource

extends AbstractPrototypeBasedTargetSource
implements PoolingConfig DisposableBean
java.lang.Object
   ↳ org.springframework.aop.target.AbstractBeanFactoryBasedTargetSource
     ↳ org.springframework.aop.target.AbstractPrototypeBasedTargetSource
       ↳ org.springframework.aop.target.AbstractPoolingTargetSource
Known Direct Subclasses

Class Overview

Abstract base class for pooling TargetSource implementations 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 CommonsPoolTargetSource for a concrete example.

Subclasses must implement the getTarget() and releaseTarget(Object) methods based on their chosen object pool. The 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 getPoolingConfigMixin() method makes these stats available on proxied objects through an IntroductionAdvisor.

This class implements the DisposableBean interface in order to force subclasses to implement a destroy() method, closing down their object pool.

Summary

[Expand]
Inherited Fields
From class org.springframework.aop.target.AbstractBeanFactoryBasedTargetSource
Public Constructors
AbstractPoolingTargetSource()
Public Methods
int getMaxSize()
Return the maximum size of the pool.
DefaultIntroductionAdvisor getPoolingConfigMixin()
Return an IntroductionAdvisor that providing a mixin exposing statistics about the pool maintained by this object.
abstract Object getTarget()
Acquire an object from the pool.
abstract void releaseTarget(Object target)
Return the given object to the pool.
final void setBeanFactory(BeanFactory beanFactory)
Set the owning BeanFactory.
void setMaxSize(int maxSize)
Set the maximum size of the pool.
Protected Methods
abstract void createPool()
Create the pool.
[Expand]
Inherited Methods
From class org.springframework.aop.target.AbstractPrototypeBasedTargetSource
From class org.springframework.aop.target.AbstractBeanFactoryBasedTargetSource
From class java.lang.Object
From interface org.springframework.aop.TargetClassAware
From interface org.springframework.aop.TargetSource
From interface org.springframework.aop.target.PoolingConfig
From interface org.springframework.beans.factory.BeanFactoryAware
From interface org.springframework.beans.factory.DisposableBean

Public Constructors

public AbstractPoolingTargetSource ()

Public Methods

public int getMaxSize ()

Return the maximum size of the pool.

public DefaultIntroductionAdvisor getPoolingConfigMixin ()

Return an IntroductionAdvisor that providing a mixin exposing statistics about the pool maintained by this object.

public abstract Object getTarget ()

Acquire an object from the pool.

Returns
  • an object from the pool
Throws
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)

Return the given object to the pool.

Parameters
target object that must have been acquired from the pool via a call to getTarget()
Throws
Exception to allow pooling APIs to throw exception
See Also

public final void setBeanFactory (BeanFactory beanFactory)

Set the owning BeanFactory. We need to save a reference so that we can use the getBean method on every invocation.

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

public void setMaxSize (int maxSize)

Set the maximum size of the pool. Default is -1, indicating no size limit.

Protected Methods

protected abstract void createPool ()

Create the pool.

Throws
Exception to avoid placing constraints on pooling APIs