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配置的核心处理类。

 

猜你喜欢

转载自blog.csdn.net/zhaoxinglin123/article/details/81084512