AOP

作者: 美美欣 | 来源:发表于2018-05-09 17:29 被阅读0次

    1. AOP概念:

    Aspect Oriented Programming,面向切面编程。是OOP(Object Oriented Programmign)面向切面编程的补充,OOP中是纵向关系,导致代码大量重复,不利于模块重用。
    如日志功能,安全性,异常处理和 透明的持续性,往往横向的分布在所有对象层次中,且这种代码和对象的核心功能无关,这种代码被称为“横切”。
    AOP技术利用可以“横切”的技术,抛开对象内部,并将影响了多个类的公共行为封装到一个可重用模块,命名为“Aspect”,即切面。便于减少系统的重复代码,降低模块之间的耦合度,并有利于未来可操作性和可维护性。
    AOP的作用在于把系统中的横切关注点从核心关注点分离出来。

    1.1 横切关注点:

    对哪些方法进行拦截,拦截后怎么处理,这些关注点称之为横切关注点

    1.2 切面(aspect)

    类是对物体特征的抽象,切面就是对横切关注点的抽象

    1.3 连接点(joinpoint)

    被拦截到的点,因为Spring只支持方法类型的连接点,所以在Spring中连接点指的就是被拦截到的方法,实际上连接点还可以是字段或者构造器

    1.4 切入点(pointcut)

    对连接点进行拦截的定义

    1.5 通知(advice)

    所谓通知指的就是指拦截到连接点之后要执行的代码,通知分为前置、后置、异常、最终、环绕通知五类

    1.6 目标对象

    代理的目标对象

    1.7 织入(weave)

    将切面应用到目标对象并导致代理对象创建的过程

    1.8 引入(introduction)

    在不修改代码的前提下,引入可以在运行期为类动态地添加一些方法或字段


    2. Spring对AOP对支持

    Spring中AOP代理由Spring的IOC容器负责生成、管理,其依赖关系也由IOC容器负责管理。因此,AOP代理可以直接使用容器中的其它bean实例作为目标,这种关系可由IOC容器的依赖注入提供。

    2.1 Spring创建代理的规则为:

    • 默认使用Java动态代理来创建AOP代理,这样就可以为任何接口实例创建代理了

    • 当需要代理的类不是代理接口的时候,Spring会切换为使用CGLIB代理,也可强制使用CGLIB

    2.2 程序员只需要参与三个部分:

    • 定义普通业务组件

    • 定义切入点,一个切入点可能横切多个业务组件

    • 定义增强处理,增强处理就是在AOP框架为普通业务组件织入的处理动作


    3. jar包

    Gradle: org.springframework:spring-aop:5.0.5.RELEASE
    下面包含两个文件夹: aopalliance 和 springframework.aop

    未完待续...

    相关文章

      网友评论

          本文标题:AOP

          本文链接:https://www.haomeiwen.com/subject/ltjnrftx.html