一、探究的思路就是:
1、先看给容器中注册了什么组件?
2、这个组件什么时候工作?
3、这个组件的功能是什么?
二、给容器中注册了什么组件?
答: @EnableAspectJAutoProxy这个注解的最终目的就是给容器中注册一个AnnotationAwareAspectJAutoProxyCreator.class组件
2.1
图1解释:自行编写一个简单了AOP小程序,在org.springframework.context.annotation.AspectJAutoProxyRegistrar#registerBeanDefinitions();方法中打断点,debug查看运行过程;
2.2、下面是方法4的代码详情:
在该方法中,先判断注册器是否包含beanName="internalAutoProxyCreator"的组件,因第一次运行,并没有这个组件,于是进入自定义注册组件的逻辑。
最终结果是:
注册器registry注册了一个beanName=“internalAutoProxyCreator”,类型为AnnotationAwareAspectJAutoProxyCreator.class的组件。
2.3、接下来执行剩下的代码:获取@EnableAspectJAutoProxy注解的两个属性,并进行相关逻辑的判断(这两个属性啥意思我还没研究)。
2.4:完事。最终结果是: @EnableAspectJAutoProxy这个注解给容器中注册一个类型为AnnotationAwareAspectJAutoProxyCreator.class的组件 ;
本篇结束。



