• 19_AOP概述


    【AOP的使用场景】

    性能测试

    访问控制

    事务管理

    日志记录

    【AOP相关术语】

    [ 连接点 Joinpoint ]

      程序执行的某个特定位置。(假如Car类有drive()方法,那么在drive()方法之前,drive()方法之后,或者方法抛出异常之后,这些即为连接点)Spring仅仅支持方法的连接点,即仅能在方法调用前、调用后、方法调用前后、方法抛出异常时这些连接点执行织入增强。

      连接点由两个信息确定:

      1.方法表示的程序的执行点。如Car类的drive()方法。

      2.用相对点表示的方位。如Car类的drive()方法之前、之后、前后或抛出异常。

    [ 切点 Pointcut ]

      一个类可能有多个连接点(如Car类的有多个方法),切点的存在是为了“定位”连接点。假如多个连接点是数据库中的多条数据,切点相当于查询条件。注意:一个切点可以匹配多个连接点(正如SQL语句的Select可以查询多条数据)。

      在Spring中连接点通过org.springframework.aop.Pointcut接口进行描述,它使用类和方法作为连接点的查询条件。由于连接点是方法的执行前、后的包括方位信息的具体程序执行点,注意切点只定位到某个方法上(还没有包含方位,方位由增强Advice提供)。

    (切点:定位某个方法  连接点:定位方法前、方法后......)

    [ 增强 Advice ]

      增强是织入到目标类的连接点上的一段程序代码。

      在Spring中,增强除了包含一段程序代码外,还包含了连接点的方位信息。

      正由于增强的者两部分组成,Spring的增强接口都是带方位名称的:BeforeAdvice、AfterReturning、ThrowsAdvice等。

      注意:只有切点和增强一块才能确定具体的连接点,并执行增强的代码。

    [ 目标对象 target ]

      增强织入的目标类。

    [ 引介 Introduction ]

      引介是一种特殊的增强,它为类添加一些属性和方法。即使一个业务类原本没有实现某个接口,通过AOP的引介功能,可以动态地为该业务类添加接口的实现逻辑,让业务类称为这个接口的实现类。

    [ 织入Weaving ]

      将增强添加到目标类的具体连接点的过程。

      AOP的织入有三种方式:

      1.编译期织入,要求使用特殊的java编译器。

      2.类装载织入,要求使用特殊的类装载器。

      3.动态代理织入,在运行期间为目标类添加增强,生成子类的过程。

      Spring采用的是3.动态代理织入的方式,而AspectJ采用1,2方式的织入。

    [ 代理 Proxy ]

      一个类被AOP织入增强后,就产生了一个结果类,它是融合了原来类和增强逻辑的代理类。

      按照不同代理方式,代理类即可能是和原来类具有相同的接口,也可能是原来类的子类。

    [ 切面 Aspect ]

      切面由" 切点+增强(或引介) "组成。它既包含了横切逻辑的定义,也包括了连接点的定义。

      SpringAOP就负责实施切面的框架,它将切面所定义的横切逻辑织入到切面所指定的连接点中。

  • 相关阅读:
    DOM笔记(二):Node接口
    DOM笔记(一):HTMLDocument接口
    mysql_connect v/s mysql_pconnect
    HTML 5:绘制旋转的太极图
    HTML 5:你必须知道的data属性
    CSS:7个你可能不认识的单位
    CSS 3的display:盒类型详解
    PHP:6种GET和POST请求发送方法
    asp.net mvc生命周期学习
    关于sql row_number,rank,dense_rank,ntile函数
  • 原文地址:https://www.cnblogs.com/HigginCui/p/6308607.html
Copyright © 2020-2023  润新知