AOP原理: @EnableAspectJAutoProxy
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Import({AspectJAutoProxyRegistrar.class})
public @interface EnableAspectJAutoProxy {
boolean proxyTargetClass() default false;
boolean exposeProxy() default false;
}
@EnableAspectJAutoProxy里面的AspectJAutoProxyRegistrar.class?
class AspectJAutoProxyRegistrar implements ImportBeanDefinitionRegistrar
利用AspectJAutoProxyRegistrar自定义给容器中注册bean;
internalAutoProxyCreator = AnnotationAwareAspectJAutoProxyCreator;
AnnotationAwareAspectJAutoProxyCreator
AnnotationAwareAspectJAutoProxyCreator
-> AspectJAwareAdvisorAutoProxyCreator
->-> AbstractAdvisorAutoProxyCreator
->->-> AbstractAutoProxyCreator
implements SmartInstantiationAwareBeanPostProcessor, BeanFactoryAware
SmartInstantiationAwareBeanPostProcessor:关于后置处理器,在bean初始化完成前后做的事情;
BeanFactoryAware:自动装配BeanFactory