1,方法前执行:
@Before("execution(* spring..*.*(..))")
public void before(JoinPoint joinPoint){
Object[] args=joinPoint.getArgs();//参数列表
String methodName = joinPoint.getSignature().getName();//方法名
}
2,方法后:
@After("execution(* spring..*.*(..))")
public void after(JoinPoint joinPoint){
Object[] args=joinPoint.getArgs();//参数列表
String methodName = joinPoint.getSignature().getName();//方法名
}
3,返回值
@AfterReturning(value="execution(* spring..*.*(..))",returning="obj")
public void afterReturning(Object obj){
}
4,抛出异常
@AfterThrowing("execution(* spring..*.*(..))")
public void afterThrowing(Object obj){
}
5,环绕
@Around("execution(* spring..*.*(..))")
public Object around(ProceedingJoinPoint po) throws Throwable{
Date before = new Date();
Object o = po.proceed();
Date after = new Date();
long time = after.getTime()-before.getTime();
System.out.println(po.getTarget().getClass().getName()+"方法:"+po.getSignature().getName()+"执行时间:"+time);
return o;
}