4、Joinpoint获取目标方法的信息
4.1、在通知方法运行的时候,拿到目标方法的详细信息
/**
* 细节四:
* 在通知方法运行的时候,拿到目标方法的详细信息
* 1、只需要为通知方法的参数上写一个参数
* JoinPoint joinPoint:封装了当前目标方法的详细信息
*
*/
public static void logStart(JoinPoint joinPoint){
//拿到目标方法的参数
Object[] args = joinPoint.getArgs();
//拿到目标方法的方法签名
Signature signature = joinPoint.getSignature();
//获取方法名
String name = signature.getName();
System.out.println("["+name+"]开始执行.....它的参数是:"+Arrays.asList(args)+"");
}
//这个方法想在目标方法正常执行结束之后运行
@AfterReturning("execution(public int com.fxp.impl.MyCalculator.*(int,int))")
public static void LogReturn(JoinPoint joinPoint){
//获取方法名
Signature signature = joinPoint.getSignature();
String name = signature.getName();
System.out.println("["+name+"]正常执行完毕.....,结果是:xxx");
}
//这个方法想在目标方法出现异常的时候执行
@AfterThrowing("execution(public int com.fxp.impl.MyCalculator.*(int,int))")
public static void LogErr(JoinPoint joinPoint) {
Signature signature = joinPoint.getSignature();
String name = signature.getName();
System.out.println("["+name+"]出现异常:xxx");
}
//这个方法想在方法执行结束之后运行
@After("execution(public int com.fxp.impl.MyCalculator.*(int,int))")
public static void LogEnd(JoinPoint joinPoint) {
System.out.println("["+joinPoint.getSignature().getName()+"]方法最终执行完毕");
}
}
运行结果: