| package com.xcong.excoin.common.aspect; | 
|   | 
| import org.aspectj.lang.ProceedingJoinPoint; | 
| import org.aspectj.lang.reflect.MethodSignature; | 
|   | 
| import java.lang.reflect.Method; | 
|   | 
| /** | 
|  * @author MrBird | 
|  */ | 
| public abstract class BaseAspectSupport { | 
|   | 
|     Method resolveMethod(ProceedingJoinPoint point) { | 
|         MethodSignature signature = (MethodSignature)point.getSignature(); | 
|         Class<?> targetClass = point.getTarget().getClass(); | 
|   | 
|         Method method = getDeclaredMethod(targetClass, signature.getName(), | 
|                 signature.getMethod().getParameterTypes()); | 
|         if (method == null) { | 
|             throw new IllegalStateException("无法解析目标方法: " + signature.getMethod().getName()); | 
|         } | 
|         return method; | 
|     } | 
|   | 
|     private Method getDeclaredMethod(Class<?> clazz, String name, Class<?>... parameterTypes) { | 
|         try { | 
|             return clazz.getDeclaredMethod(name, parameterTypes); | 
|         } catch (NoSuchMethodException e) { | 
|             Class<?> superClass = clazz.getSuperclass(); | 
|             if (superClass != null) { | 
|                 return getDeclaredMethod(superClass, name, parameterTypes); | 
|             } | 
|         } | 
|         return null; | 
|     } | 
| } |