Dubbo源码学习(二配置文件)
Posted 皓月行空
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Dubbo源码学习(二配置文件)相关的知识,希望对你有一定的参考价值。
坚持一下,把源码看完,勤奋一点,不要在懒惰了,你已经落下别人很多了
环境配置:
jdk 1.7.0.17
dubbo 2.5.x
myeclipse 2014
idea 2017
new ClassPathXmlApplicationContext("provider.xml"); 在spring解析配置文件的时候,遇到dubbo标签 比如<dubbo :registry />等等,根据spring的handler的加载机制(就是扫描jar包下的META-INFO文件夹下的spring.handlers文件),找到dubbo的标签处理类DubboNamespaceHandler
DubboNamespaceHandler
public void init() registerBeanDefinitionParser("application", new DubboBeanDefinitionParser(ApplicationConfig.class, true)); registerBeanDefinitionParser("module", new DubboBeanDefinitionParser(ModuleConfig.class, true)); registerBeanDefinitionParser("registry", new DubboBeanDefinitionParser(RegistryConfig.class, true)); registerBeanDefinitionParser("monitor", new DubboBeanDefinitionParser(MonitorConfig.class, true)); registerBeanDefinitionParser("provider", new DubboBeanDefinitionParser(ProviderConfig.class, true)); registerBeanDefinitionParser("consumer", new DubboBeanDefinitionParser(ConsumerConfig.class, true)); registerBeanDefinitionParser("protocol", new DubboBeanDefinitionParser(ProtocolConfig.class, true)); registerBeanDefinitionParser("service", new DubboBeanDefinitionParser(ServiceBean.class, true)); registerBeanDefinitionParser("reference", new DubboBeanDefinitionParser(ReferenceBean.class, false)); registerBeanDefinitionParser("annotation", new AnnotationBeanDefinitionParser());
通过init方法也就不难看出,基本上囊括了dubbo的所有配置,由此理出下边关于config的结构图
Config结构图
由于ServiceBean和ReferenceBean 的结构层次最深,所以我们重点关照一下这两个类,其实其他的Config只是把xmlfeng封装为对应的config对象,额外的处理也不是很多,但是ServiceBean 涉及到 服务暴露 、ReferenceBean涉及到服务引用,所以这两个类可以称之为dubbo配置的核心处理类。
以上是关于Dubbo源码学习(二配置文件)的主要内容,如果未能解决你的问题,请参考以下文章