SSM16 —— Spring的AOP简介

https://www.bilibili.com/video/BV1WZ4y1P7Bp?p=121

1.1 什么是AOP

在这里插入图片描述
AOP

  • 是一种技术,
  • 运行期间执行,
  • 通过动态代理来完成。动态代理的优点:不修改源码的基础上对目标方法进行增强;作用:完成程序功能间的松耦合

有A和B两种功能,要进行结合,不把这2个功能的代码写在一起,因为写在一起A和B功能就耦合了。可以让A和B功能在运行时动态结合在一起,

如果B、C、D都需要A功能,那么使用AOP的配置就可以把他们分别结合在一起

1.2 AOP的作用及优势

在这里插入图片描述

当save、update和delete方法都需要日志控制时,

  1. 原来的写法,每个方法都写一个日志控制功能:
    在这里插入图片描述
    缺点是,要想改日志控制,需要改三处
  2. 可以把日志控制方法抽取出去,然后需要用的时候引用:
    在这里插入图片描述
    缺点是日志控制和方法耦合死了
  3. AOP的方法:
    在save运行前调用日志控制,使用配置文件来使日志文件和save方法结合
    在这里插入图片描述

1.3 AOP的底层实现

在这里插入图片描述

1.4 AOP的动态代理技术

在这里插入图片描述
目标对象有接口用JDK代理,没有接口用cglib代理

  1. JDK动态代理:
    在这里插入图片描述
    基于目标接口在运行期间动态生成代理对象,基于接口使得代理对象和目标对象有相同的方法
  2. cglib动态代理:
    在这里插入图片描述
    没有接口的情况下,为目标对象在运行期间动态生成子对象即代理对象,来保证目标对象和代理对象有相同的方法,子对象功能比父对象更强大(实际上不是继承)调用时,调用的是代理对象,然后再由代理对象调用目标对象

1.5 基于JDK的动态代理底层代码

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
接口字节码对象数组:接口可能有多个。
如果有多个接口,Proxy.newProxyInstance()返回值是哪个接口类型的?
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

1.6 基于cglib的动态代理底层代码

spring已经集成了cglib
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以上代码都被Spring封装了

1.7 AOP相关概念

在这里插入图片描述
可以被增强的方法(目标对象)叫连接点
被增强的方法中真正要被增强的方法叫做切点
连接点 - 公民,切点 - 人大代表,不是所有的公民都能成为人大代表
包含增强逻辑的方法叫做Advice
切面=目标方法(切点)+增强(通知)
织入:将切点和增强结合在一起的过程,配置的过程

1.8 AOP开发明确的事项

在这里插入图片描述

AOP技术实现的内容:配置好切点后,执行切点方法时,Spring就会监控到,然后Spring就会创建一个代理对象,然后调用代理对象的方法,内部会调用目标方法的同时还会帮忙增强这个方法

1.9 知识要点

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值