美文网首页
Spring AOP源码分析主要代码流程

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

作者: 末等公民 | 来源:发表于2018-10-06 22:08 被阅读22次

    解析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() ->        
    

    相关文章

      网友评论

          本文标题:Spring AOP源码分析主要代码流程

          本文链接:https://www.haomeiwen.com/subject/xnhkaftx.html