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

    }

  • 相关阅读:
    java.util.zip.ZipException:error in opening zip file
    Error loading WebappClassLoader
    J2EE objectcaching frameworks
    【KMS】Cannot forward a response that is already committed
    Web service是什么?
    理解JNDI中 java:comp/env/jdbc/datasource 与 jdbc/datasource 的不同之处
    生活中的MVC架构
    云计算基础交付计算资源的另一种方式
    通俗易懂云计算
    上海联通:释放云的力量
  • 原文地址:https://www.cnblogs.com/hello-liyb/p/8309764.html
Copyright © 2020-2023  润新知