Spring关于AOP的学习3(AOP注解2:@Pointcut、@Around、关于两个切面类的执行顺序)

Spring关于AOP的学习3(AOP注解2:@Pointcut、@Around、关于两个切面类的执行顺序),第1张

Spring关于AOP的学习3(AOP注解2:@Pointcut、@Around、关于两个切面类的执行顺序)

AOP注解:
(1)@Pointcut:在使用其他注解时,需要写包的表达式,而@Pointcut就是用来声明一样的包路径,已达到代码简便

    @Pointcut("execution(public Integer com.msb.service.MyCalculcator.*(Integer,Integer))")
    public void myPointCut(){ }

(2)@Acound:环绕通知

    //环绕通知
    @Around(value = "myPointCut()")
    public Object around(ProceedingJoinPoint proceedingJoinPoint){
        //获取方法名
        Signature signature = proceedingJoinPoint.getSignature();
        //获取方法信息
        Object[] args = proceedingJoinPoint.getArgs();
        Object result = null;
        try {
            //前置通知
            System.out.println("环绕通知strat:"+signature.getName()+"方法开始执行,参数为:"+ Arrays.asList(args));
            //通过反射的方式调用目标的方法,相当于执行method.invoke(),可以自己修改结果值
            result = proceedingJoinPoint.proceed(args);
            //返回通知:返回执行结果之后执行
            System.out.println("环绕通知stop:"+signature.getName()+"方法执行结束");
        }catch (Throwable throwable) {
            //异常通知
            System.out.println("环绕异常通知:"+signature.getName()+"出现异常");
        }finally {
            //后置通知:在方法执行结束之后执行
            System.out.println("环绕返回通知:"+signature.getName()+"方法返回结果:"+result);
        }
        return result;
    }

(3)关于两个切面类的执行顺序:若有多个切面类,执行的时候按照的顺序:执行顺序是按照类名的首字符,越小越优先,可以用@Order(数字)注解,数字越小越优先

关于AOP学习源码链接:源码下载

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5712534.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存