Package org.springframework.aop.target
Class AbstractPoolingTargetSource
java.lang.Object
org.springframework.aop.target.AbstractBeanFactoryBasedTargetSource
org.springframework.aop.target.AbstractPrototypeBasedTargetSource
org.springframework.aop.target.AbstractPoolingTargetSource
- All Implemented Interfaces:
Serializable
,PoolingConfig
,TargetClassAware
,TargetSource
,Aware
,BeanFactoryAware
,DisposableBean
- Direct Known Subclasses:
CommonsPool2TargetSource
public abstract class AbstractPoolingTargetSource
extends AbstractPrototypeBasedTargetSource
implements PoolingConfig, DisposableBean
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 CommonsPool2TargetSource
for a concrete example.
Subclasses must implement the getTarget()
and
releaseTarget(java.lang.Object)
methods based on their chosen object pool.
The 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 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 DisposableBean.destroy()
method, closing down their object pool.
- Author:
- Rod Johnson, Juergen Hoeller
- See Also:
-
Field Summary
Fields inherited from class org.springframework.aop.target.AbstractBeanFactoryBasedTargetSource
logger
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected abstract void
Create the pool.int
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.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.Methods inherited from class org.springframework.aop.target.AbstractPrototypeBasedTargetSource
destroyPrototypeInstance, newPrototypeInstance, writeReplace
Methods inherited from class org.springframework.aop.target.AbstractBeanFactoryBasedTargetSource
copyFrom, equals, getBeanFactory, getTargetBeanName, getTargetClass, hashCode, setTargetBeanName, setTargetClass, toString
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.springframework.beans.factory.DisposableBean
destroy
Methods inherited from interface org.springframework.aop.target.PoolingConfig
getActiveCount, getIdleCount
Methods inherited from interface org.springframework.aop.TargetSource
isStatic
-
Constructor Details
-
AbstractPoolingTargetSource
public AbstractPoolingTargetSource()
-
-
Method Details
-
setMaxSize
public void setMaxSize(int maxSize) Set the maximum size of the pool. Default is -1, indicating no size limit. -
getMaxSize
public int getMaxSize()Return the maximum size of the pool.- Specified by:
getMaxSize
in interfacePoolingConfig
-
setBeanFactory
Description copied from class:AbstractBeanFactoryBasedTargetSource
Set the owning BeanFactory. We need to save a reference so that we can use thegetBean
method on every invocation.- Specified by:
setBeanFactory
in interfaceBeanFactoryAware
- Overrides:
setBeanFactory
in classAbstractPrototypeBasedTargetSource
- Parameters:
beanFactory
- owning BeanFactory (nevernull
). The bean can immediately call methods on the factory.- Throws:
BeansException
- in case of initialization errors- See Also:
-
createPool
Create the pool.- Throws:
Exception
- to avoid placing constraints on pooling APIs
-
getTarget
Acquire an object from the pool.- Specified by:
getTarget
in interfaceTargetSource
- 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
-
releaseTarget
Return the given object to the pool.- Specified by:
releaseTarget
in interfaceTargetSource
- Parameters:
target
- object that must have been acquired from the pool via a call togetTarget()
- Throws:
Exception
- to allow pooling APIs to throw exception- See Also:
-
getPoolingConfigMixin
Return an IntroductionAdvisor that provides a mixin exposing statistics about the pool maintained by this object.
-