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源码学习(二配置文件)的主要内容,如果未能解决你的问题,请参考以下文章

深入Dubbo源码 - Dubbo配置文件解析

Dubbo源码学习 详解Dubbo里的SPI

Dubbo源码学习 详解Dubbo里的SPI

Dubbo源码学习 详解Dubbo里的SPI

3.dubbo源码分析之API配置二(服务提供者)

源码导读-Dubbo SPI