Spring 进阶(16)Spring的AOP(4) 使用注解配置切面(2) @Around注解

52 篇文章 0 订阅
  1. Around注解的功能是强于Before和After注解的功能之和的,它不仅可以修改目标方法的参数和目标方法的返回值,甚至可以让目标方法不执行!但是它需要在安全的线程里执行,所以如果可以使用before和after注解就解决问题的话就不用Around。
  2. 下面简单说说它的用法
    1. 和Before一样,Around注解是语法是@Around(参数),这个参数是它的织入点
    2. 当定义一个Around增强处理方法的时候,该方法的第一个形参必须是Proceedding类型,在增强方法内调用Proceedding的proceed方法才会执行目标方法(这样才可以实现在目标方法执行和之后的处理嘛)。
    3. 具体怎么处理参数和返回值在代码里讲解。
      package before_package;
      
      
      import org.aspectj.lang.ProceedingJoinPoint;
      import org.aspectj.lang.annotation.Around;
      import org.aspectj.lang.annotation.Aspect;
      
      @Aspect
      public class AuthAspect {
      
          @Around("execution(* before_package.*.*(..))")
          public Object processTx(ProceedingJoinPoint proceedingJoinPoint) throws  java.lang.Throwable{
      //        第一个形参必须是ProceedingJoinPoint
              
              System.out.println("执行方法之前");
              
              Object args[] = proceedingJoinPoint.getArgs();
      //        在方法运行之前得到他的参数
              
      //        在目标方法执行之前修改它的参数
              if(args != null && args.length > 1){
                  args[0] = "增强的前缀" + args[0];
              }
              
              Object rvt = proceedingJoinPoint.proceed(args);
      //        执行目标方法,并且获得它的返回值 
              
              System.out.println("方法执行之后");
              
      //        修改返回值
              if(rvt != null && rvt instanceof  Integer){
                  rvt = (Integer)rvt * (Integer)rvt;
              }
              return rvt;
      
          }
      }
      

      其他的类和测试类和上一篇博文是一样的~~~~

    4. 这是我看李刚编著的《轻量级javaEE企业应用实战(第五版)-Struts2+Spring5+Hibernate5/JAP2》后总结出来的。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值