spring5-AOP

AOP(概述)

(1) 面向切面编程,利用AOP可以对业务逻辑的各个部分进行分离,从而使业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率
(2) 示例不通过修改源代码方式,在主干功能里面添加新功能
spring5-AOP_第1张图片

2. AOP底层原理

  1. AOP底层使用动态代理
    (1) 有两种情况动态代理
    第一种情况:有接口情况,使用jdk动态代理
    spring5-AOP_第2张图片
    第二种:没有接口情况,使用CGLIB动态代理
    创建之类的代理的对象,增强子类的方法
    spring5-AOP_第3张图片

3. AOP(JDK动态代理)

  1. 使用jdk
    spring5-AOP_第4张图片
    newProxyInstance方法有三个参数
    第一个参数:类加载器
    第二个参数:增强方法所在的类,这个类实现的接口,支持多个接口,
    第三个参数:实现这个接口InvocationHandler,创建代理对对象,写增强的方法
    编写jdk动态代理代码
    (1) 创建接口,定义方法
    (2) 创建接口实现类实现方法
    (3) 使用proxy接口
    spring5-AOP_第5张图片
    spring5-AOP_第6张图片
    spring5-AOP_第7张图片
    在这里插入图片描述
  2. AOP(术语)
  3. 连接点
    类哪些方法可以被增强,这些方法称为连接点
  4. 切入点
    实际被真正增强的方法称为切入点
  5. 通知(增强)
    (1) 实际增强的逻辑部分称为通知(增强)
    (2) 通知有多种类型
    前置通知,
    后置通知,
    环绕通知,
    异常通知
    最终通知
    (3)
  6. 切面
    把通知应用到切入点过程

AOP操作(准备)

  1. Spring操作一般都基于AspectJ实现AOP操作
    (1) 什么是AspectJ
    AspectJ不是Spring组成部分,独立AOP框架,一般把AspectJ和Spring框架一起使用,进行aop操作
  2. 基于AspectJ实现AOP操作
    基于xml配置文件实现,
    基于注解方式实现
  3. 在项目工程里面引入AOP相关依赖
    spring5-AOP_第8张图片
  4. 切入点表达式
    (1)切入点表达式作用:知道哪个类里面的哪个方法进行增强
    (2)语法结构
    Execution([权限修饰符][返回类型][类全路径][方法名称][参数列表])
    举例1:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    AOP操作(AspectJ注解)
    创建类,在类里面定义方法
    spring5-AOP_第9张图片

2.创建增强类(编写增强逻辑)
(1).在增强类里面创建方法,让不同方法代表不同通知类型
3.进行通知的配置
(1) 引入context,aop名称空间,在spring配置文件中,开启注解扫描

(2) 使用注解创建User和UserProxy对象
5. spring5-AOP_第10张图片
(3) 在增强类上面添加注解@Aspect
spring5-AOP_第11张图片
(4)在spring配置文件中生成代理对象
在这里插入图片描述
配置不同类型的通知

spring5-AOP_第12张图片
公共的切入点抽取
spring5-AOP_第13张图片
有多个增强类对同一个方法进行增强,设置增强类优先级
(1)在增强类上面添加注解@Order(数字类型值),数字类型值越小优先级越高
spring5-AOP_第14张图片

完全使用注解开发

(1) 创建配置类,不需要创建xml

spring5-AOP_第15张图片
AOP操作(Aspect配置文件)

  1. 创建两个类,增强类和被增强类,创建方法
  2. 在spring配置文件中创建两个类对象,
  3. 在spring配置文件中配置切入点
    spring5-AOP_第16张图片

你可能感兴趣的:(Spring5框架)