Spring AOP源码分析主要代码流程

解析aop相关的标签

DefaultBeanDefinitionDocumentReader.parseBeanDefinitions() ->  

    BeanDefinitionParserDelegate.parseCustomElement() -> 处理<aop:config>标签,先根据namespace获取AopNamespaceHandler
    this.readerContext.getNamespaceHandlerResolver().resolve(namespaceUri)会调用AopNamespaceHandler的init()方法,注册对应标签的解析器  

        NamespaceHandlerSupport.parse() -> findParserForElement()根据标签获取解析器,<aop:config>对应的是ConfigBeanDefinitionParser  
    
            NamespaceHandlerSupport.findParserForElement() -> 根据名称config获取ConfigBeanDefinitionParser  
            ConfigBeanDefinitionParser.parse() -> 实际调用的是ConfigBeanDefinitionParser.parse()  
                
                ConfigBeanDefinitionParser.configureAutoProxyCreator -> 向容器中注册名称为"org.springframework.aop.config.internalAutoProxyCreator"的bean,class=AspectJAwareAdvisorAutoProxyCreator
        
                ConfigBeanDefinitionParser.parseAspect() ->  
            
                    ConfigBeanDefinitionParser.parseAdvice() ->  
                
                        ConfigBeanDefinitionParser.createAdviceDefinition() ->  
                        
                    ConfigBeanDefinitionParser.parsePointcut() ->

初始化aop相关bean

AbstractAutowireCapableBeanFactory.initializeBean() ->  

    AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization ->  
    
        AbstractAutoProxyCreator.postProcessAfterInitialization() ->  
        
            AbstractAutoProxyCreator.wrapIfNecessary() ->  
        
                AbstractAdvisorAutoProxyCreator.getAdvicesAndAdvisorsForBean() ->  
                
                    AbstractAdvisorAutoProxyCreator.findEligibleAdvisors() ->  
                    
                        AbstractAdvisorAutoProxyCreator.findCandidateAdvisors() ->
                        AbstractAdvisorAutoProxyCreator.findAdvisorsThatCanApply() ->
                        
                AbstractAutoProxyCreator.createProxy() ->        
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容