# 《Spring核心技术》第23章:深度解析@EnableAspectJAutoProxy注解
作者:冰河
星球:http://m6z.cn/6aeFbs (opens new window)
博客:https://binghe.gitcode.host (opens new window)
文章汇总:https://binghe.gitcode.host/md/all/all.html (opens new window)
源码地址:https://github.com/binghe001/spring-annotation-book/tree/master/spring-annotation-chapter-22 (opens new window)
沉淀,成长,突破,帮助他人,成就自我。
大家好,我是冰河~~
本章难度:★★★★☆
本章重点:从源码级别彻底掌握@EnableAspectJAutoProxy注解在Spring底层的执行流程。
本章目录如下所示:
- 学习指引
- 源码时序图
- 注册AnnotationAwareAspectJAutoProxyCreator类
- 解析AnnotationAwareAspectJAutoProxyCreator类
- 源码解析
- 注册AnnotationAwareAspectJAutoProxyCreator类
- 解析AnnotationAwareAspectJAutoProxyCreator类
- 总结
- 思考
- VIP服务
# 一、学习指引
Spring中的@EnableAspectJAutoProxy注解,你真的彻底了解过吗?
@EnableAspectJAutoProxy注解是基于Spring注解开启AOP功能的注解,通常会将它标注到配置类上。那对于@EnableAspectJAutoProxy注解来说,你真的了解过Spring底层执行了哪些操作吗?
注意:本章会以第22章的案例程序为基础分析@EnableAspectJAutoProxy注解的源码时序图和源码执行流程。
# 二、源码时序图
结合时序图理解源码会事半功倍,你觉得呢?
通过@EnableAspectJAutoProxy注解的源码可以发现,在@EnableAspectJAutoProxy注解的源码上使用@Import注解导入了AspectJAutoProxyRegistrar类。在导入的AspectJAutoProxyRegistrar类后,最核心的逻辑就是解析了AnnotationAwareAspectJAutoProxyCreator类。所以,加载加载@EnableAspectJAutoProxy注解可以分成两部分进行解析,一部分是注册AnnotationAwareAspectJAutoProxyCreator类,一部分是解析AnnotationAwareAspectJAutoProxyCreator类。
本节,就介绍下@EnableAspectJAutoProxy注解在Spring底层的执行时序图。主要从注册AnnotationAwareAspectJAutoProxyCreator类和解析AnnotationAwareAspectJAutoProxyCreator类两个方面进行分析。
# 2.1 注册AnnotationAwareAspectJAutoProxyCreator类
注册AnnotationAwareAspectJAutoProxyCreator类的源码执行流程如图23-1~23-3所示。
由图23-1~23-3可以看出,注册AnnotationAwareAspectJAutoProxyCreator类的源码执行流程会涉及AspectTest类、AnnotationConfigApplicationContext类、AbstractApplicationContext类、PostProcessorRegistrationDelegate类、ConfigurationClassPostProcessor类、ConfigurationClassParser类、ConfigurationClass类、ConfigurationClassBeanDefinitionReader类、ImportBeanDefinitionRegistrar接口和AspectJAutoProxyRegistrar类,具体的源码执行细节参见源码解析部分。
# 2.2 解析AnnotationAwareAspectJAutoProxyCreator类
解析AnnotationAwareAspectJAutoProxyCreator类的源码执行流程如图23-4~23-6所示。
# 查看完整文章
加入冰河技术 (opens new window)知识星球,解锁完整技术文章与完整代码