前言

最近回顾了一下Spring源码,准备用思维导图的方式简单的将整个源码内容的流程展示出来,思维导图、图片等文件更新在https://github.com/MrSorrow/spring-framework仓库中,阅读博客不方便可以直接下载。

思维导图使用MindMaster制作而成,可以下载导入查看。
如果有知道如何在markdown中展示思维导图或矢量图的朋友,希望能评论告知 ????
利用阿里云对象存储即可!

流程图底色为蓝色主要是Spring留给用户自定义扩展的地方,因为研究Spring源码除了了解实现机制以外,更需要了解如何在Spring的基础上扩展我们自己需要定制的功能,这可能也是许多其他框架适配Spring的关键所在。

本文主要关于Spring 动态AOP的实现原理及流程分析,具体源码分析细节可以参考以下文章:

Spring AOP的实现流程

总览

点开图片查看高清大图 ????

经反馈,图片点开体验不好,特意添加阿里云的OSS服务,SVG链接在此!
Spring源码——动态AOP实现流程

解析AspectJ的自定义标签

利用 <aop:aspectj-autoproxy /> 向容器添加 AnnotationAwareAspectJAutoProxyCreator 自动代理创建器(其实是一个BeanPostProcessor)。
Spring源码——动态AOP实现流程

实例化AnnotationAwareAspectJAutoProxyCreator

实例化 AnnotationAwareAspectJAutoProxyCreator bean后处理器 (参考 ApplicationContext 的刷新流程)

Spring源码——动态AOP实现流程

**AnnotationAwareAspectJAutoProxyCreator

** AnnotationAwareAspectJAutoProxyCreator bean后处理器 (参考 XmlBeanFactory 的实例化流程)
Spring源码——动态AOP实现流程
判断该beanName是否需要跳过,不需要代理。
Spring源码——动态AOP实现流程
过滤匹配目标bean的增强器。
Spring源码——动态AOP实现流程
创建代理对象。
Spring源码——动态AOP实现流程

执行代理对象的增强方法

点开图片查看高清大图 ????
Spring源码——动态AOP实现流程

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-03
  • 2021-10-21
  • 2021-10-02
  • 2022-12-23
猜你喜欢
  • 2021-10-08
  • 2021-11-18
  • 2022-01-07
  • 2022-12-23
  • 2021-08-23
  • 2021-07-24
相关资源
相似解决方案