public class ThreadLocalTargetSource extends AbstractPrototypeBasedTargetSource implements ThreadLocalTargetSourceStats, DisposableBean
TargetSource
uses a threading model in which every thread has its own copy of the target.
There's no contention for targets. Target object creation is kept to a minimum
on the running server.
Application code is written as to a normal pool; callers can't assume they will be dealing with the same instance in invocations in different threads. However, state can be relied on during the operations of a single thread: for example, if one caller makes repeated calls on the AOP proxy.
Cleanup of thread-bound objects is performed on BeanFactory destruction,
calling their DisposableBean.destroy()
method if available.
Be aware that many thread-bound objects can be around until the application
actually shuts down.
ThreadLocalTargetSourceStats
,
DisposableBean.destroy()
,
Serialized Formlogger
Constructor and Description |
---|
ThreadLocalTargetSource() |
Modifier and Type | Method and Description |
---|---|
void |
destroy()
Dispose of targets if necessary; clear ThreadLocal.
|
int |
getHitCount()
Return the number of hits that were satisfied by a thread-bound object.
|
int |
getInvocationCount()
Return the number of client invocations.
|
int |
getObjectCount()
Return the number of thread-bound objects created.
|
IntroductionAdvisor |
getStatsMixin()
Return an introduction advisor mixin that allows the AOP proxy to be
cast to ThreadLocalInvokerStats.
|
java.lang.Object |
getTarget()
Implementation of abstract getTarget() method.
|
destroyPrototypeInstance, newPrototypeInstance, setBeanFactory, writeReplace
copyFrom, equals, getBeanFactory, getTargetBeanName, getTargetClass, hashCode, isStatic, releaseTarget, setTargetBeanName, setTargetClass, toString
public java.lang.Object getTarget() throws BeansException
getTarget
in interface TargetSource
null
if there is no actual target instanceBeansException
public void destroy()
destroy
in interface DisposableBean
AbstractPrototypeBasedTargetSource.destroyPrototypeInstance(java.lang.Object)
public int getInvocationCount()
ThreadLocalTargetSourceStats
getInvocationCount
in interface ThreadLocalTargetSourceStats
public int getHitCount()
ThreadLocalTargetSourceStats
getHitCount
in interface ThreadLocalTargetSourceStats
public int getObjectCount()
ThreadLocalTargetSourceStats
getObjectCount
in interface ThreadLocalTargetSourceStats
public IntroductionAdvisor getStatsMixin()