栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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学习源码链接:源码下载

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/715895.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号