SpringAOP 简介

    AOP 面向切面编程,是将不同方法的共性功能抽取出来,形成单独模块,并在运行时可以插拔式的融合到业务逻辑中。
    传统的功能实现,以数据库操作的增删改为例:
这里写图片描述

    在上图中,可以发现重复的代码片段。
    面向切面的功能实现:
这里写图片描述
    在上图中,每个方法的第一个步骤都相同,绿色的箭头横向指着相同的步骤,面向切面编程就是要解决这个不同方法的横切方向上相同的代码片段的问题。

AOP 相关概念

AOP 是抽取相同的代码片段即共性功能,提高代码的重用性。

  • 通知
    AOP 抽取的共性功能形成的模块,即将共性功能单独封装成一个或一组类
  • 通知类别
    共性功能从原始操作中抽取的位置不同,可以分为前置、后置、抛出异常等几类,这些称为通知类别
  • 目标对象
    使用共性功能的对象称为目标对象
  • 连接点
    目标对象的所有方法称为连接点
  • 切入点
    目标对象中使用共性功能的方法称为切入点
  • 切面
    通知和切入点的对应关系称为切面
  • AOP代理
    创建原对象的代理对象,用来整合通知和切入点
  • 织入
    将共性功能放到代理对象代理的方法中的过程称为织入,可以分为编译时织入、类加载时织入和动态织入(Spring使用的方式)
  • 引入
    通知只能抽取共性功能,而无法抽取共性的成员变量和方法。引入机制可以为类添加额外的成员变量和成员方法。

AOP 的工作流程

开发阶段:

  1. 抽取共性代码,创建通知类
  2. 创建目标类,添加切入点方法
  3. 配置通知和切入点的对应关系,即切面

运行阶段:

  1. JVM 监控切入点方法的执行
  2. 监控到切入点时,使用动态代理创建代理对象,根据通知类别,在代理对象的相应位置将通知织入,形成完整逻辑。

猜你喜欢

转载自blog.csdn.net/qq_30038111/article/details/80038278