Spring之AOP

AOP的概念
1:理解AOP是什么
    * AOP Aspect-oriented programming   面向切面(方面)的编程
    * AOP的实现能够对业务逻辑和系统级的服务进行隔离,使业务逻辑跟各系统服务之间的耦合度下降
        提升程序的重用性和开发效率。
      业务逻辑:某个类的某个方法要实现的功能
      系统级服务:系统日志,事务 ,安全性验证
 
2:怎么实现AOP     
    * AOP实现的原理都是经过动态代理来实现的
    详见:DynamicProxyTest.java
    注意:有两种实现方式 jdk的动态代理和cglib动态代理
        jdk的动态代理机制只能代理实现了接口的类(基于接口编程)
        cglib的动态代理能够代理没有实现接口的类,也能够代理实现了接口的类
 
3:AOP的一些专业术语       
  * 切面(Aspect) 就是交叉在各个业务逻辑中的系统服务 ,相似于 安全验证,事务处理,日志记录
  * 织入(weaving) 就是讲切面的实现插入到目标方法的过程
  * 链接点(JoinPoint) 就是理论上能够被切面织入的方法 好比StudentServiceImpl类里面的全部方法
  * 切入点(PointCut) 就是实际上被切面织入的方法  好比事务控制 add update del
  * 目标对象(target) 就是包含了被切面织入的方法  的类 ---StudentServiceImpl
  * 通知(Adivce) 就是切面的实现
  * 顾问(Advisor) 其实就是通知的一个封装和延伸 能够将通知以更复杂的方式织入到某些方法中
 
4:  spring的AOP实现
    4.1 引入两个jar包
        *  spring-aop-4.2.1.RELEASE.jar
        * aopalliance-1.0.jar
 
    4.2 各类通知(前置通知,后置通知,环绕通知,异常通知) 的代码
MethodBeforeAdvice    spring前置通知须要实现的接口 
AfterReturningAdvice   spring后置通知须要实现的接口 
MethodInterceptor      spring环绕通知须要实现的接口 

  

    4.3 配置通知 和应用通知
        * 配置目标对象类
        * 配置通知
        * 配置代理生成器
ProxyFactoryBean
 
    4.4 通知注意点   
        * 在代理类生成器的配置里面 ,关于接口的属性默承认以不用 <property name = "interfaces values">
        * 由于后置通知是在目标方法执行以后才执行,他能够获得目标方法的返回值,可是不能更改它的返回值
        * 环绕通知既有在目标方法执行前的代码,也有在目标方法执行后的代码,他不只能够获得目标方法的返回值
            并且能够改变他
    详见代码:com.tz.springstudy.sysmanage.advice.*
            applicationContext.xml
            AdviceTest.java   
 
    4.5 顾问(advisor)    它将通知进行了包装, 将切面织入到指定的某些方法当中   
        PointcutAdvisor是顾问的一种,它有两种实现方式
        * 名称匹配方法切入点顾问
            NameMatchMethodPointcutAdvisor
        * 正则表达式匹配方法切入点顾问
            RegexpMethodPointcutAdvisor
            a: *  匹配前面的表达式任意次  好比 ab* 能匹配ab abb abbb abbbbbb
            b: .  匹配任意单个字符 除了 "\r\n" 以外
            .* 表明任意字符串 
        详见代码:applicationContext.xml
                AdvisorTest.java   
 
    顾问解决了某些方法的问题,自动代理了生成器解决了某些类的问题
    咱们一直在努力将某些切面织入到某些类的某些方法里面去           
相关文章
相关标签/搜索