@EnableAspectJAutoProxy
aop的注解版从@EnableAspectJAutoProxy注解开始的,这个组件功能是什么
如果我们学习新功能我们就看是否有@Enable注解,有的话是否有注册什么组件,组件的功能是什么
核心原理:【看给容器中注册了什么组件,这个组件什么时候工作,这个组件的功能是什么?】
1.使用@Import自定义导出组件类的方式,
1.1利用AspectJAutoProxyRegistrar.class自定义给容器中注册bean
1.2beanDefinition bean的定义就是创建一个AnnotationAwareAspectJAutoProxyCreator,beanName叫internalAutoProxyCreator
1.3internalAutoProxyCreator=AnnotationAwareAspectJAutoProxyCreator[见图2]
给容器中注册一个AnnotationAwareAspectJAutoProxyCreator;注解装配模式切面自动代理创建器
- 2、 AnnotationAwareAspectJAutoProxyCreator:
AnnotationAwareAspectJAutoProxyCreator
–>AspectJAwareAdvisorAutoProxyCreator
---------->AbstractAdvisorAutoProxyCreator
-------------------->AbstractAutoProxyCreator
implements SmartInstantiationAwareBeanPostProcessor, BeanFactoryAware
关注后置处理器(就是在bean初始化完成前后做事情)、自动装配BeanFactory
@Import(AspectJAutoProxyRegistrar.class)
public @interface EnableAspectJAutoProxy {
boolean proxyTargetClass() default false;
boolean exposeProxy() default false;
}
我们下一步关注的就是AnnotationAwareAspectJAutoProxyCreator做了什么?