• 手动实现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("");          */  

    }

  • 相关阅读:
    一点点
    第四章:检查产品说明书
    这是一个动画效果,一个圆在桌面上动
    border-image的拉伸和平铺
    用js实现左右阴影的切换
    伪样式:hover ,:active,:focus
    画一个DIV并给它的四个角变成圆形,且加上阴影
    【转】asp.net 项目在 IE 11 下出现 “__doPostBack”未定义 的解决办法
    Full postback triggered by LinkButton inside GridView inside UpdatePanel
    苹果IOS开发者账号的区别,企业账号,个人账号,公司团队账号,教育账号
  • 原文地址:https://www.cnblogs.com/hello-liyb/p/8309764.html
Copyright © 2020-2023  润新知