org.springframework.aop.framework
Class Cglib2AopProxy.ProxyCallbackFilter
java.lang.Object
org.springframework.aop.framework.Cglib2AopProxy.ProxyCallbackFilter
- Enclosing class:
- Cglib2AopProxy
private static class Cglib2AopProxy.ProxyCallbackFilter
- extends java.lang.Object
CallbackFilter to assign Callbacks to methods.
Methods inherited from class java.lang.Object |
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait |
advised
private final AdvisedSupport advised
fixedInterceptorMap
private final java.util.Map<java.lang.String,java.lang.Integer> fixedInterceptorMap
fixedInterceptorOffset
private final int fixedInterceptorOffset
Cglib2AopProxy.ProxyCallbackFilter
public Cglib2AopProxy.ProxyCallbackFilter(AdvisedSupport advised,
java.util.Map<java.lang.String,java.lang.Integer> fixedInterceptorMap,
int fixedInterceptorOffset)
accept
public int accept(java.lang.reflect.Method method)
- Implementation of CallbackFilter.accept() to return the index of the
callback we need.
The callbacks for each proxy are built up of a set of fixed callbacks
for general use and then a set of callbacks that are specific to a method
for use on static targets with a fixed advice chain.
The callback used is determined thus:
- For exposed proxies
- Exposing the proxy requires code to execute before and after the
method/chain invocation. This means we must use
DynamicAdvisedInterceptor, since all other interceptors can avoid the
need for a try/catch block
- For Object.finalize():
- No override for this method is used.
- For equals():
- The EqualsInterceptor is used to redirect equals() calls to a
special handler to this proxy.
- For methods on the Advised class:
- the AdvisedDispatcher is used to dispatch the call directly to
the target
- For advised methods:
- If the target is static and the advice chain is frozen then a
FixedChainStaticTargetInterceptor specific to the method is used to
invoke the advice chain. Otherwise a DyanmicAdvisedInterceptor is
used.
- For non-advised methods:
- Where it can be determined that the method will not return
this
or when ProxyFactory.getExposeProxy()
returns false
,
then a Dispatcher is used. For static targets, the StaticDispatcher is used;
and for dynamic targets, a DynamicUnadvisedInterceptor is used.
If it possible for the method to return this
then a
StaticUnadvisedInterceptor is used for static targets - the
DynamicUnadvisedInterceptor already considers this.
equals
public boolean equals(java.lang.Object other)
- Overrides:
equals
in class java.lang.Object
equalsAdviceClasses
private boolean equalsAdviceClasses(Advisor a,
Advisor b)
equalsPointcuts
private boolean equalsPointcuts(Advisor a,
Advisor b)
hashCode
public int hashCode()
- Overrides:
hashCode
in class java.lang.Object