环绕通知@Around

Posted 燕大梁朝伟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了环绕通知@Around相关的知识,希望对你有一定的参考价值。

1.环绕通知需要在方法的参数中指定JoinPoint的子接口类型ProceedingJoinPoint为参数
  @Around(value="pointCut()")
  public void around(ProceedingJoinPoint joinPoint){
  }
 2.环绕通知会将其他4个通知能干的,自己都给干了!
  注意:@Around修饰的方法一定要将方法的返回值返回!本身相当于代理!
  
  @Around(value="pointCut()")
  public Object around(ProceedingJoinPoint joinPoint){
   Object[] args = joinPoint.getArgs();
   Signature signature = joinPoint.getSignature();
   String methodName = signature.getName();
   List<Object> list = Arrays.asList(args);
   Object result = null;
   try {
    //目标方法之前要执行的操作
    System.out.println("[环绕日志]"+methodName+"开始了,参数为:"+list);
    //调用目标方法
    result = joinPoint.proceed(args);
    //目标方法正常执行之后的操作
    System.out.println("[环绕日志]"+methodName+"返回了,返回值为:"+result);
   } catch (Throwable e) {
    //目标方法抛出异常信息之后的操作
    System.out.println("[环绕日志]"+methodName+"出异常了,异常对象为:"+e);
    throw new RuntimeException(e.getMessage());
   }finally{
    //方法最终结束时执行的操作!
    System.out.println("[环绕日志]"+methodName+"结束了!");
   }
   return result;
  }

以上是关于环绕通知@Around的主要内容,如果未能解决你的问题,请参考以下文章

环绕通知@Around

3.24 切面发布-环绕通知

AOP执行流程

返回通知异常通知环绕通知

SpringAOP 面向切面编程-环绕通知(掌握)

Spring(十七):Spring AOP:通知(前置后置返回异常环绕)