Class AopUtils
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.
- Author:
- Rod Johnson, Juergen Hoeller, Rob Harrop
- See Also:
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionstatic booleanCan the given advisor apply at all on the given class? This is an important test as it can be used to optimize out an advisor for a class.static booleanCan the given advisor apply at all on the given class?static booleanCan the given pointcut apply at all on the given class?static booleanCan the given pointcut apply at all on the given class?findAdvisorsThatCanApply(List<Advisor> candidateAdvisors, Class<?> clazz) Determine the sublist of thecandidateAdvisorslist that is applicable to the given class.static MethodgetMostSpecificMethod(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 ObjectinvokeJoinpointUsingReflection(Object target, Method method, Object[] args) Invoke the given target via reflection, as part of an AOP method invocation.static booleanisAopProxy(Object object) Check whether the given object is a JDK dynamic proxy or a CGLIB proxy.static booleanisCglibProxy(Object object) Check whether the given object is a CGLIB proxy.static booleanisEqualsMethod(Method method) Determine whether the given method is an "equals" method.static booleanisFinalizeMethod(Method method) Determine whether the given method is a "finalize" method.static booleanisHashCodeMethod(Method method) Determine whether the given method is a "hashCode" method.static booleanisJdkDynamicProxy(Object object) Check whether the given object is a JDK dynamic proxy.static booleanisToStringMethod(Method method) Determine whether the given method is a "toString" method.static MethodselectInvocableMethod(Method method, Class<?> targetType) Select an invocable method on the target type: either the given method itself if actually exposed on the target type, or otherwise a corresponding method on one of the target type's interfaces or on the target type itself.
- 
Constructor Details- 
AopUtilspublic AopUtils()
 
- 
- 
Method Details- 
isAopProxyCheck whether the given object is a JDK dynamic proxy or a CGLIB proxy.This method additionally checks if the given object is an instance of SpringProxy.- Parameters:
- object- the object to check
- See Also:
 
- 
isJdkDynamicProxyCheck whether the given object is a JDK dynamic proxy.This method goes beyond the implementation of Proxy.isProxyClass(Class)by additionally checking if the given object is an instance ofSpringProxy.- Parameters:
- object- the object to check
- See Also:
 
- 
isCglibProxyCheck whether the given object is a CGLIB proxy.This method goes beyond the implementation of ClassUtils.isCglibProxy(Object)by additionally checking if the given object is an instance ofSpringProxy.- Parameters:
- object- the object to check
- See Also:
 
- 
getTargetClassDetermine the target class of the given bean instance which might be an AOP proxy.Returns the target class for an AOP proxy or the plain class otherwise. - Parameters:
- candidate- the instance to check (might be an AOP proxy)
- Returns:
- the target class (or the plain class of the given object as fallback;
 never null)
- See Also:
 
- 
selectInvocableMethodSelect an invocable method on the target type: either the given method itself if actually exposed on the target type, or otherwise a corresponding method on one of the target type's interfaces or on the target type itself.- Parameters:
- method- the method to check
- targetType- the target type to search methods on (typically an AOP proxy)
- Returns:
- a corresponding invocable method on the target type
- Throws:
- IllegalStateException- if the given method is not invocable on the given target type (typically due to a proxy mismatch)
- Since:
- 4.3
- See Also:
 
- 
isEqualsMethodDetermine whether the given method is an "equals" method.- See Also:
 
- 
isHashCodeMethodDetermine whether the given method is a "hashCode" method.- See Also:
 
- 
isToStringMethodDetermine whether the given method is a "toString" method.- See Also:
 
- 
isFinalizeMethodDetermine whether the given method is a "finalize" method.- See Also:
 
- 
getMostSpecificMethodGiven 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. E.g. the method may beIFoo.bar()and the target class may beDefaultFoo. In this case, the method may beDefaultFoo.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 bridge methods in order to retrieve attributes from the original method definition.- Parameters:
- method- the method to be invoked, which may come from an interface
- targetClass- the target class for the current invocation. May be- nullor may not even implement the method.
- Returns:
- the specific target method, or the original method if the
 targetClassdoesn't implement it or isnull
- See Also:
 
- 
canApplyCan the given pointcut apply at all on the given class?This is an important test as it can be used to optimize out a pointcut for a class. - Parameters:
- pc- the static or dynamic pointcut to check
- targetClass- the class to test
- Returns:
- whether the pointcut can apply on any method
 
- 
canApplyCan the given pointcut apply at all on the given class?This is an important test as it can be used to optimize out a pointcut for a class. - Parameters:
- pc- the static or dynamic pointcut to check
- targetClass- the class to test
- hasIntroductions- whether the advisor chain for this bean includes any introductions
- Returns:
- whether the pointcut can apply on any method
 
- 
canApplyCan the given advisor apply at all on the given class? This is an important test as it can be used to optimize out an advisor for a class.- Parameters:
- advisor- the advisor to check
- targetClass- class we're testing
- Returns:
- whether the pointcut can apply on any method
 
- 
canApplyCan the given advisor apply at all on the given class?This is an important test as it can be used to optimize out an advisor for a class. This version also takes into account introductions (for IntroductionAwareMethodMatchers). - Parameters:
- advisor- the advisor to check
- targetClass- class we're testing
- hasIntroductions- whether the advisor chain for this bean includes any introductions
- Returns:
- whether the pointcut can apply on any method
 
- 
findAdvisorsThatCanApplypublic static List<Advisor> findAdvisorsThatCanApply(List<Advisor> candidateAdvisors, Class<?> clazz) Determine the sublist of thecandidateAdvisorslist that is applicable to the given class.- Parameters:
- candidateAdvisors- the Advisors to evaluate
- clazz- the target class
- Returns:
- sublist of Advisors that can apply to an object of the given class (may be the incoming List as-is)
 
- 
invokeJoinpointUsingReflection@Nullable public static Object invokeJoinpointUsingReflection(@Nullable Object target, Method method, Object[] args) throws Throwable Invoke the given target via reflection, as part of an AOP method invocation.- Parameters:
- target- the target object
- method- the method to invoke
- args- the arguments for the method
- Returns:
- the invocation result, if any
- Throws:
- Throwable- if thrown by the target method
- AopInvocationException- in case of a reflection error
 
 
-