## org.springframework.aop
Interface TargetSource

All Superinterfaces:
  TargetClassAware

All Known Implementing Classes:
  AbstractBeanFactoryBasedTargetSource, AbstractLazyCreationTargetSource, AbstractPoolingTargetSource, AbstractPrototypeBasedTargetSource, AbstractRefreshableTargetSource, BeanFactoryRefreshableTargetSource, CommonsPoolTargetSource, EmptyTargetSource, HotSwappableTargetSource, JndiObjectTargetSource, LazyInitTargetSource, PrototypeTargetSource, RefreshableScriptTargetSource, SimpleBeanTargetSource, SingletonTargetSource, ThreadLocalTargetSource

    public interface TargetSource

extends TargetClassAware

A `TargetSource` is used to obtain the current "target" of an AOP invocation, which will be invoked via reflection if no around advice chooses to end the interceptor chain itself.

If a `TargetSource` is "static", it will always return the same target, allowing optimizations in the AOP framework. Dynamic target sources can support pooling, hot swapping, etc.

Application developers don't usually need to work with `TargetSources` directly: this is an AOP framework interface.

Author:
  Rod Johnson

Method Summary
`Object` `getTarget()` Return a target instance.
`Class<?>` `getTargetClass()` Return the type of targets returned by this `TargetSource`.
`boolean` `isStatic()` Will all calls to `getTarget()` return the same object?
`void` `releaseTarget(Object target)` Release the given target object obtained from the `getTarget()` method.

Method Detail

### getTargetClass

    Class<?> getTargetClass()

  Return the type of targets returned by this `TargetSource`.

  Can return `null`, although certain usages of a `TargetSource` might just work with a predetermined target class.

  Specified by:
    `getTargetClass` in interface `TargetClassAware`
  Returns:
    the type of targets returned by this `TargetSource`

### isStatic

    boolean isStatic()

  Will all calls to `getTarget()` return the same object?

  In that case, there will be no need to invoke `releaseTarget(Object)`, and the AOP framework can cache the return value of `getTarget()`.

  Returns:
    `true` if the target is immutable
  See Also:
    `getTarget()`

### getTarget

    Object getTarget()
                     throws Exception

  Return a target instance. Invoked immediately before the AOP framework calls the "target" of an AOP method invocation.

  Returns:
    the target object, which contains the joinpoint
  Throws:
    `Exception` - if the target object can't be resolved

### releaseTarget

    void releaseTarget(Object target)
                       throws Exception

  Release the given target object obtained from the `getTarget()` method.

  Parameters:
    `target` - object obtained from a call to `getTarget()`
  Throws:
    `Exception` - if the object can't be released