注解方式笔记整理"/>
Spring AOP基于注解方式笔记整理
基于注解AOP对象创建流程
- @EnableAspectJAutoProxy引入AspectJAutoProxyRegistrar
- AopConfigUtils.registerAspectJAnnotationAutoProxyCreatorIfNecessary*(registry)
- 向容器中注入AnnotationAwareAspectJAutoProxyCreator后置处理器
- AnnotationAwareAspectJAutoProxyCreator#initBeanFactory中初始化解析工具
this.advisorRetrievalHelper = new BeanFactoryAdvisorRetrievalHelperAdapter(beanFactory); this.aspectJAdvisorFactory = new ReflectiveAspectJAdvisorFactory(beanFactory); this.aspectJAdvisorsBuilder =new BeanFactoryAspectJAdvisorsBuilderAdapter(beanFactory, this.aspectJAdvisorFactory);
- AbstractAutoProxyCreator#postProcessBeforeInstantiation
- AbstractAutoProxyCreator#postProcessAfterInitialization
- AbstractAutoProxyCreator#wrapIfNecessary
- AbstractAutoProxyCreator#createProxy
- ProxyFactory#getProxy获取代理对象
AbstractAutoProxyCreator#postProcessBeforeInstantiation
- AspectJAwareAdvisorAutoProxyCreator#shouldSkip
- AnnotationAwareAspectJAutoProxyCreator#findCandidateAdvisors
- BeanFactoryAspectJAdvisorsBuilderAdapter#buildAspectJAdvisors
- 从BeanFactory容器中获取所有的Aspect对象
- ReflectiveAspectJAdvisorFactory#getAdvisors解析出Advisor并放入缓存
AbstractAutoProxyCreator#wrapIfNecessary创建代理对象
- AbstractAdvisorAutoProxyCreator#getAdvicesAndAdvisorsForBean
- AbstractAdvisorAutoProxyCreator#findEligibleAdvisors
- AnnotationAwareAspectJAutoProxyCreator#findCandidateAdvisors
- AbstractAdvisorAutoProxyCreator#findCandidateAdvisors
- BeanFactoryAdvisorRetrievalHelper#findAdvisorBeans获取容器中的Advisor集合(我们没有手动向容器中注入过Advisor对象,所以这里有一定会返回空集合)
- BeanFactoryAspectJAdvisorsBuilderAdapter#buildAspectJAdvisors从缓存中获取到Advisor集合
- AbstractAutoProxyCreator#createProxy
- ProxyFactory#getProxy创建代理对象
更多推荐
Spring AOP基于注解方式笔记整理
发布评论