org.springframework.aop
Interface TargetSource

All Superinterfaces:
TargetClassAware
All Known Implementing Classes:
AbstractBeanFactoryBasedTargetSource, AbstractLazyCreationTargetSource, AbstractPoolingTargetSource, AbstractPrototypeBasedTargetSource, AbstractRefreshableTargetSource, BeanFactoryRefreshableTargetSource, CommonsPoolTargetSource, EmptyTargetSource, HotSwappableTargetSource, JndiObjectTargetSource, LazyInitTargetSource, MBeanExporter.NotificationPublisherAwareLazyTargetSource, MBeanServerConnectionFactoryBean.JMXConnectorLazyInitTargetSource, MBeanServerConnectionFactoryBean.MBeanServerConnectionLazyInitTargetSource, 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
 java.lang.Object getTarget()
          Return a target instance.
 java.lang.Class<?> getTargetClass()
          Return the type of targets returned by this TargetSource.
 boolean isStatic()
          Will all calls to getTarget() return the same object?
 void releaseTarget(java.lang.Object target)
          Release the given target object obtained from the getTarget() method.
 

Method Detail

getTargetClass

java.lang.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

java.lang.Object getTarget()
                           throws java.lang.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:
java.lang.Exception - if the target object can't be resolved

releaseTarget

void releaseTarget(java.lang.Object target)
                   throws java.lang.Exception
Release the given target object obtained from the getTarget() method.

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