SpringAOP原理

SpringAOP原理,第1张

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方法中通过游标循环执行已经排序好的拦截器方法,不同的拦截器方法在不同的时机进行调用,最终完成代码功能的增强。

时序图

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5697227.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存