SpringAOP原理

SpringAOP原理

SpringAOP原理主要分为三个部分:

  1. 创建代理类
  2. 代码织入
  3. 通知回调

1. 创建代理类

AOP的入口在Spring依赖注入之后的初始化方法中(initializeBean),在Bean初始化完成之后,会调用BeanPostProcessor的后置处理器方法,该处理器的实现类AbstractAutoProxyCreator负责代理类的创建。该类首先会获得Spring中所有的通知Advice,并根据当前对象进行切入点表达式的匹配,如果能够匹配上则表示当前对象需要增强。在创建代理过程中会判断当前对象是否满足JDK动态代理的条件,如果不满足则通过代理工厂类生成CGLib动态代理。

2. 代码织入

通知代码的织入主要在动态代理类中的invoke方法中,该方法会根据当前要执行的Method方法,去获取对应的Advice通知,并将Advice封装成MethodInterceptor对象,最终返回一个方法拦截器链。然后根据Method与拦截器链封装成MethodInvocation对象。

3. 通知回调

MethodInvocation对象通过调用proceed方法执行方法的调用,proceed方法中通过游标循环执行已经排序好的拦截器方法,不同的拦截器方法在不同的时机进行调用,最终完成代码功能的增强。

时序图

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值