文章目录
EnableAspectJAutoProxy 开启AOP
开启AOP功能可用注解形式开启:
@EnableAspectJAutoProxy
看下@EnableAspectJAutoProxy注解的作用
由上图源码可知,EnableAspectJAutoProxy注解导入了AspectJAutoProxyRegist类。
AspectJAutoProxyRegistrar类分析
分析下AspectJAutoProxyRegist类的作用。
AspectJAutoProxyRegist类继承了ImportBeanDefinitionRegistrar。
class AspectJAutoProxyRegistrar implements ImportBeanDefinitionRegistrar
会在spring ioc 扫描类定义的过程中调用里面的registerBeanDfinitions方法。
然后通过AopConfigUtils工具类在IOC容器中注册了AnnotationAwareAspectAutoProxyCreator类
AOP核心类分析
AnnotationAwareAspectAutoProxyCreator
以下是AnnotationAwareAspectAutoProxyCreator类的继承关系类图
根据以上类图,分析后得到如下图
根居上面的类图可知,AnnotationAwareAspectAutoProxyCreator的父类AbstractAutoProxyCreator实现了其中的InstantiationAwareBeanPostProcessor接口方法postProcessBeforeInstantiation和postProcessAfterInitialization
AbstractAutoProxyCreator
postProcessBeforeInstantiation方法
执行时机
postProcessBeforeInstantiation方法会在IOC容器实例化Bean的过程中,创建Bean之前调用。
调用处:
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory
#resolveBeforeInstantiation