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