Spring--AOP详解

Spring的核心部分

  1. IOC:控制反转,把创建对象过程和对象之间的调用过程交给Spring进行管理,为了降低耦合度
  2. AOP:面向切面,不修改源代码进行功能增强

AOP简介

面向切面编程,利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高开发的效率。通俗的说,就是不通过修改源代码的方式,在主干功能里面添加新功能。
在这里插入图片描述

底层原理

AOP底层使用动态代理

  1. 有接口情况,使用JDK动态代理
    创建接口实现类代理对象,增强类的方法
    在这里插入图片描述
    使用Proxy类里面的方法创建代理对象,调用newProxyInstance方法
    在这里插入图片描述
    该方法有三个参数:
    第一个参数:类加载器
    第二个参数:增强方法所在的类,这个类实现的接口,支持多个接口
    第三个参数:实现这个接口InvocationHandler,创建代理对象,写增强的部分
    JDK动态代理具体过程
    (1)创建接口,定义方法
    在这里插入图片描述
    (2)创建接口的实现类,实现方法
    在这里插入图片描述
    (3)使用Proxy类创建接口代理对象
    在这里插入图片描述
    在这里插入图片描述

  2. 没有接口,使用CGLIB动态代理
    创建子类的代理对象,增强类的方法
    在这里插入图片描述

AOP术语

  1. 连接点
    类里面哪些方法是可以被增强的,这些方法称为连接点。
  2. 切入点
    实际被真正增强的方法,称为切入点。
  3. 通知(增强)
    实际增强的逻辑部分称为通知(增强)。
  4. 切面(是动作)
    把通知应用到切入点的过程。

基于AspectJ实现AOP操作

基于xml配置文件实现

  1. 创建两个类,增强类和被增强类,创建方法

  2. 在spring配置文件中创建两个类对象
    在这里插入图片描述

  3. 在spring配置文件中配置切入点
    在这里插入图片描述

基于注解方式实现(使用)

  1. 创建类,在类里面定义方法
    在这里插入图片描述
  2. 创建增强类(编写增强逻辑)
    在增强类中,创建方法,让不同方法代表不同通知类型
    在这里插入图片描述
  3. 进行通知的配置
    (1)在spring配置文件中,开启注解扫描
    在这里插入图片描述
    (2)使用注解创建User和UserProxy对象
    在这里插入图片描述
    (3)在增强类上面添加注解@Aspect
    在这里插入图片描述
    (4)在spring配置文件中开启生成代理对象
    在这里插入图片描述
  4. 配置不同类型的通知
    (1)在增强类的里面,在作为通知方法上面添加通知类型的注解,使用切入点表达式配置
    在这里插入图片描述
  5. 相同的切入点抽取
    在这里插入图片描述
    在这里插入图片描述
  6. 有多个增强类对同一个方法进行增强,设置增强类优先级
    在增强类上面添加注解@Order(数字类型值),数字类型值越小优先级越高。
    在这里插入图片描述
  7. 使用完全注解开发
    创建配置类,不需要创建xml配置文件
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值