AOP(Aspect-Oriented Programming)

81 阅读2分钟

一、AOP概述

  1. 是什么:
    • 一种用于将横切关注点与主要业务逻辑分离的软件开发技术
  2. 底层原理:
    • 使用动态代理
      • 有两种情况动态代理
        • 有接口时,使用JDK动态代理
          • 创建接口实现类代理对象,增强类的方法
        • 无接口时,使用CGLIB动态代理
          • 创建子类的代理对象,增强类的方法
  3. 操作术语:
    • 连接点
      • 类里面可被增强的方法
    • 切入点
      • 实际被真正增强的方法
    • 通知/增强
      • 实际增强的逻辑部分
      • 通知的多种类型
        • 前置通知
        • 后置通知
        • 环绕通知
        • 异常通知
        • 最终通知
    • 切面
      • 把通知应用到切入点过程的动作

二、AOP操作

  1. 准备工作:
    • Spring框架里一般都是基于AspectJ实现AOP操作 - 关于AspectJ: - 非Spring的组成部分,是一个独立AOP框架,一般将其与Spring一起用,进行AOP操作
  2. 基于AspectJ实现AOP操作
    • 基于xml配置文件实现
    • 基于注解方式实现
      • 创建类,在类里定义方法
      • 创建增强类(编写增强逻辑)
        • 在增强类里,创建方法,让不同方法代表不同通知类型
      • 进行通知的配置
        • 在spring配置文件里开启注解扫描
        • 使用注解创建对象
        • 在增强类上添加注解@Aspect
        • 在spring配置文件中开启生成代理对象
      • 配置不同类型的通知
        • 在增强类里边,在作为通知的方法上添加通知类型注解
      • 相同的切入点抽取
      • 有多个增强类对同一个方法进行增强,设置增强类优先级
        • 在增强类上添加注解@Order(数字类型值),数字类型值越小优先级越高
  3. 在项目中引入AOP相关依赖
  4. 切入点表达式
    • 作用
      • 知道对哪个类里面的哪个方法进行增强
    • 语法结构
      • execution([权限修饰符][返回类型][类全路径]方法名称)