@AspectJ支持的5种通知:
—@Before:前置通知在方法执行前执行
//明该方法为一个前置通知:在目标方法开始之前执行
—@After:后置通知,在方法执行后执行
//后置通知,就是在目标方法执行之后(无论是否发生异常)执行的通知
//后置通知中不能访问目标方法的返回结果
—@AfterReturning:返回通知,在方法返回结果之后执行
//返回通知,在方法正常结束之后执行的代码
//返回通知是可以访问到方法的返回值的
获取返回的值:
@AfterReturning(value = "execution(* a.b.*( ))",returning = "result")
public void afterReturning(JoinPoint joinPoint,String result){
System.out.println("value is "+result);
}
—@AfterThrowing:异常通知,在方法抛出异常后执行
//返回异常通知,返回抛出异常的时候执行的通知,可以获得返回的异常
//可以访问到异常对象,且可以指定在出现特定异常的时候再执行通知代码
—@Around:环绕通知,围绕着方法执行
//环绕通知需要携带ProceedingJoinPoint类型的参数
//环绕通知类似于动态代理的全过程,这个类型ProceedingJoinPoint的参数可以决定是否执行目标方法
//且环绕通知必须有返回值,返回值即为目标方法返回值
proceedingJoinPoint.proceed(); //放行
对于切面的优先级
可以在类上使用注解@Order(1),括号中的数字越小,优先级越高
对于切面的优先级
可以在类上使用注解@Order(1),括号中的数字越小,优先级越高
@Order(1)