Spring aop 注解方式怎么获得执行了目标的某个方法?

来源:互联网 发布:python虚拟主机 编辑:程序博客网 时间:2024/05/17 04:14
private void beforeTransationHandle(JoinPoint point) throws Exception{//拦截的实体类Object target = point.getTarget();//拦截的方法名称String methodName = point.getSignature().getName();//拦截的方法参数Object[] args = point.getArgs();//拦截的放参数类型Class[] parameterTypes = ((MethodSignature)point.getSignature()).getMethod().getParameterTypes();Method m = null;try {//通过反射获得拦截的methodm = target.getClass().getMethod(methodName, parameterTypes);//如果是桥则要获得实际拦截的methodif(m.isBridge()){for(int i = 0; i < args.length; i++){//获得泛型类型Class genClazz = GenericsUtils.getSuperClassGenricType(target.getClass());//根据实际参数类型替换parameterType中的类型if(args[i].getClass().isAssignableFrom(genClazz)){parameterTypes[i] = genClazz;}}//获得parameterType参数类型的方法m = target.getClass().getMethod(methodName, parameterTypes);}} catch (SecurityException e) {e.printStackTrace();} catch (NoSuchMethodException e) {e.printStackTrace();}}
0 0