zoukankan      html  css  js  c++  java
  • 手动实现aop编程

    手动实现aop编程(运用代理模式实现)

     aop:aspect object programming

          功能:让关注点与业务代码分离

      关注点:重复代码就叫做关注点

      切面:关注点形成的类,就叫切面(类)

      面向切面编程,就是只对功能都有的重复的代码抽取,在在运行的时候动态植入“切面类代码“

      切入点:执行目标对象方法,动态植入切面代码

          可以通过切入点表达式,指定拦截哪些类的哪些方法给指定的类在运行的时候植入切面类代码

    注解实现aop编程

      第一步:引入jar包

      第二部引入名称空间

      第三部:开启aop注解扫描 <aop:aspectj-autoproxy></aop:aspectj-autoproxy>(注解扫描是<context:component-scan base-package="包名+类名"></....>)

      @aspect   //指定当前类为切面类

      @before (“execute(* 包名+类名+方法名(..))”)   类如:("execute(* liYaBin.proxy.UserDao.save(..)") // ..为方法里面的参数  before为在执行目标方法之前执行

      @after(切入点表单式)

    //优化

     @pointcut(切入点表单式)

    public void testPoint_(){

    }

    @before("testPont_")

    @after("testPoint_")

    目标对象有实现接口,spring会自动选择使用动态代理,相反则会选择使用cglib代理

    包名或方法名可以用*代理 代表为全部

      其他注解

        @AfterReturning("testPoint")  //调用目标方法之后运行

        @AfterThrowing() //当目标方法出现错误时运行

            但是After不管是否出现异常都会执行而AfterThrow在有异常是不会执行

        @around(“testPoint”)//环绕部标方法执行

        public voidaround(ProceedingJoinPoint pjp)throws Throwable{

          system.out.print("");         /*  环绕相当于before和after   

          pjp.proceed();                    

          system.out.print("");          */  

    }

  • 相关阅读:
    华为FusionCloud云计算vCPU资源计算公式(MHz)
    Jenkins入门总结
    前端构建工具gulp使用 (转)
    大窍决:放松,放松,再放松! 高僧开示汇编
    万物在这种绝对真性中自然解脱! 顶果钦哲仁波切
    阿姜查:为何我们生于此?|这个世界的真相
    与「法」同住世间
    阿姜查:哪里有迷妄,哪里便有平静
    阿姜查:不必让自己成为什么 一切顺其自然就好
    阿姜查:当心碰到外尘时,才是真正修行的开始
  • 原文地址:https://www.cnblogs.com/hello-liyb/p/8309764.html
Copyright © 2011-2022 走看看