public abstract class AopUtils extends Object
Mainly for internal use within Spring's AOP support.
See AopProxyUtils for a
collection of framework-specific AOP utility methods which depend
on internals of Spring's AOP framework implementation.
AopProxyUtils| Constructor and Description |
|---|
AopUtils() |
| Modifier and Type | Method and Description |
|---|---|
static boolean |
canApply(Advisor advisor,
Class<?> targetClass)
Can the given advisor apply at all on the given class?
This is an important test as it can be used to optimize
out a advisor for a class.
|
static boolean |
canApply(Advisor advisor,
Class<?> targetClass,
boolean hasIntroductions)
Can the given advisor apply at all on the given class?
|
static boolean |
canApply(Pointcut pc,
Class<?> targetClass)
Can the given pointcut apply at all on the given class?
|
static boolean |
canApply(Pointcut pc,
Class<?> targetClass,
boolean hasIntroductions)
Can the given pointcut apply at all on the given class?
|
static List<Advisor> |
findAdvisorsThatCanApply(List<Advisor> candidateAdvisors,
Class<?> clazz)
Determine the sublist of the
candidateAdvisors list
that is applicable to the given class. |
static Method |
getMostSpecificMethod(Method method,
Class<?> targetClass)
Given a method, which may come from an interface, and a target class used
in the current AOP invocation, find the corresponding target method if there
is one.
|
static Class<?> |
getTargetClass(Object candidate)
Determine the target class of the given bean instance which might be an AOP proxy.
|
static Object |
invokeJoinpointUsingReflection(Object target,
Method method,
Object[] args)
Invoke the given target via reflection, as part of an AOP method invocation.
|
static boolean |
isAopProxy(Object object)
Check whether the given object is a JDK dynamic proxy or a CGLIB proxy.
|
static boolean |
isCglibProxy(Object object)
Check whether the given object is a CGLIB proxy.
|
static boolean |
isEqualsMethod(Method method)
Determine whether the given method is an "equals" method.
|
static boolean |
isFinalizeMethod(Method method)
Determine whether the given method is a "finalize" method.
|
static boolean |
isHashCodeMethod(Method method)
Determine whether the given method is a "hashCode" method.
|
static boolean |
isJdkDynamicProxy(Object object)
Check whether the given object is a JDK dynamic proxy.
|
static boolean |
isToStringMethod(Method method)
Determine whether the given method is a "toString" method.
|
public static boolean isAopProxy(Object object)
This method additionally checks if the given object is an instance
of SpringProxy.
object - the object to checkisJdkDynamicProxy(java.lang.Object),
isCglibProxy(java.lang.Object)public static boolean isJdkDynamicProxy(Object object)
This method goes beyond the implementation of
Proxy.isProxyClass(Class) by additionally checking if the
given object is an instance of SpringProxy.
object - the object to checkProxy.isProxyClass(java.lang.Class<?>)public static boolean isCglibProxy(Object object)
This method goes beyond the implementation of
ClassUtils.isCglibProxy(Object) by additionally checking if
the given object is an instance of SpringProxy.
object - the object to checkClassUtils.isCglibProxy(Object)public static Class<?> getTargetClass(Object candidate)
Returns the target class for an AOP proxy or the plain class otherwise.
candidate - the instance to check (might be an AOP proxy)null)TargetClassAware.getTargetClass(),
AopProxyUtils.ultimateTargetClass(Object)public static boolean isEqualsMethod(Method method)
Object.equals(java.lang.Object)public static boolean isHashCodeMethod(Method method)
Object.hashCode()public static boolean isToStringMethod(Method method)
Object.toString()public static boolean isFinalizeMethod(Method method)
Object.finalize()public static Method getMostSpecificMethod(Method method, Class<?> targetClass)
IFoo.bar() and the target class
may be DefaultFoo. In this case, the method may be
DefaultFoo.bar(). This enables attributes on that method to be found.
NOTE: In contrast to ClassUtils.getMostSpecificMethod(java.lang.reflect.Method, java.lang.Class<?>),
this method resolves Java 5 bridge methods in order to retrieve attributes
from the original method definition.
method - the method to be invoked, which may come from an interfacetargetClass - the target class for the current invocation.
May be null or may not even implement the method.targetClass doesn't implement it or is nullClassUtils.getMostSpecificMethod(java.lang.reflect.Method, java.lang.Class<?>)public static boolean canApply(Pointcut pc, Class<?> targetClass)
This is an important test as it can be used to optimize out a pointcut for a class.
pc - the static or dynamic pointcut to checktargetClass - the class to testpublic static boolean canApply(Pointcut pc, Class<?> targetClass, boolean hasIntroductions)
This is an important test as it can be used to optimize out a pointcut for a class.
pc - the static or dynamic pointcut to checktargetClass - the class to testhasIntroductions - whether or not the advisor chain
for this bean includes any introductionspublic static boolean canApply(Advisor advisor, Class<?> targetClass)
advisor - the advisor to checktargetClass - class we're testingpublic static boolean canApply(Advisor advisor, Class<?> targetClass, boolean hasIntroductions)
This is an important test as it can be used to optimize out a advisor for a class. This version also takes into account introductions (for IntroductionAwareMethodMatchers).
advisor - the advisor to checktargetClass - class we're testinghasIntroductions - whether or not the advisor chain for this bean includes
any introductionspublic static List<Advisor> findAdvisorsThatCanApply(List<Advisor> candidateAdvisors, Class<?> clazz)
candidateAdvisors list
that is applicable to the given class.candidateAdvisors - the Advisors to evaluateclazz - the target classpublic static Object invokeJoinpointUsingReflection(Object target, Method method, Object[] args) throws Throwable
target - the target objectmethod - the method to invokeargs - the arguments for the methodThrowable - if thrown by the target methodAopInvocationException - in case of a reflection error