Package org.springframework.aop.target

# Class ThreadLocalTargetSource

java.lang.Object
org.springframework.aop.target.AbstractBeanFactoryBasedTargetSource
org.springframework.aop.target.AbstractPrototypeBasedTargetSource
org.springframework.aop.target.ThreadLocalTargetSource

All Implemented Interfaces:
  `Serializable`, `ThreadLocalTargetSourceStats`, `TargetClassAware`, `TargetSource`, `org.springframework.beans.factory.Aware`, `org.springframework.beans.factory.BeanFactoryAware`, `org.springframework.beans.factory.DisposableBean`

public class ThreadLocalTargetSource extends AbstractPrototypeBasedTargetSource implements ThreadLocalTargetSourceStats, org.springframework.beans.factory.DisposableBean
Alternative to an object pool. This `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.

Author:
  Rod Johnson, Juergen Hoeller, Rob Harrop
See Also:
  - `ThreadLocalTargetSourceStats`
  - `DisposableBean.destroy()`
  - Serialized Form

## Field Summary

### Fields inherited from class org.springframework.aop.target.AbstractBeanFactoryBasedTargetSource

`logger, targetBeanName`

## Constructor Summary

Constructors
Constructor
Description
`ThreadLocalTargetSource()`

## Method Summary

Modifier and Type
Method
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.
`Object`
`getTarget()`
Implementation of abstract getTarget() method.

### Methods inherited from class org.springframework.aop.target.AbstractPrototypeBasedTargetSource

`destroyPrototypeInstance, newPrototypeInstance, setBeanFactory, 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.aop.TargetSource

`isStatic, releaseTarget`

## Constructor Details

### ThreadLocalTargetSource

public ThreadLocalTargetSource()

## Method Details

### getTarget

public Object getTarget() throws org.springframework.beans.BeansException
Implementation of abstract getTarget() method. We look for a target held in a ThreadLocal. If we don't find one, we create one and bind it to the thread. No synchronization is required.

Specified by:
  `getTarget` in interface `TargetSource`
Returns:
  the target object which contains the joinpoint, or `null` if there is no actual target instance
Throws:
  `org.springframework.beans.BeansException`

### destroy

public void destroy()
Dispose of targets if necessary; clear ThreadLocal.

Specified by:
  `destroy` in interface `org.springframework.beans.factory.DisposableBean`
See Also:
  - `AbstractPrototypeBasedTargetSource.destroyPrototypeInstance(java.lang.Object)`

### getInvocationCount

public int getInvocationCount()
Description copied from interface: `ThreadLocalTargetSourceStats`
Return the number of client invocations.

Specified by:
  `getInvocationCount` in interface `ThreadLocalTargetSourceStats`

### getHitCount

public int getHitCount()
Description copied from interface: `ThreadLocalTargetSourceStats`
Return the number of hits that were satisfied by a thread-bound object.

Specified by:
  `getHitCount` in interface `ThreadLocalTargetSourceStats`

### getObjectCount

public int getObjectCount()
Description copied from interface: `ThreadLocalTargetSourceStats`
Return the number of thread-bound objects created.

Specified by:
  `getObjectCount` in interface `ThreadLocalTargetSourceStats`

### getStatsMixin

public IntroductionAdvisor getStatsMixin()
Return an introduction advisor mixin that allows the AOP proxy to be cast to ThreadLocalInvokerStats.