Aop底层原理分析
1.首先启动SpringAop时,会使用该@EnableAspectJAutoProxy注解
2.将@Import(AspectJAutoProxyRegistrar.class)注入SpringIOC容器中
3.AspectJAutoProxyRegistrar中会注册对象
BeanId:org.springframework.aop.config.internalAutoProxyCreator
BeanClass :AnnotationAwareAspectJAutoProxyCreator
4.AnnotationAwareAspectJAutoProxyCreator最为核心:使用后置通知在bean的对象初始化的时候,实现对代理对象的增强。
AnnotationAwareAspectJAutoProxyCreator祖宗:
AbstractAutoProxyCreator 祖宗有是BeanPostProcessor
5.被代理对象在初始化的时候,AbstractAutoProxyCreator 经过这样的一个类拦截。
判断该被代理对象是否有被有实现过接口,如果有实现过接口就使用jdk动态代理,如果没有实现接口则使用cglib动态代理。
涉及解析切入点表达式的源码分析参考文章:
https://blog.csdn.net/yytree123/article/details/109317709