您的位置:首页 > 其它

Dubbo源码分析-config

2017-11-11 23:27 253 查看

Spring的关系

dubbo中扩展了spring的schema,其中dubbo的schema文件名称位dubbo.xsd,在META-INF目录下面。

dubbo.xsd中定义了dubbo中配置文件各种标签。每一种标签最终都是被解析成一个对应的Bean。

Spring在遇到dubbo.xsd命名空间时,回调spring.handlers文件中的DubboNamespaceHandler类。该类初始化时将每一种标签都解析成一个Bean对象。

解析自定义的xsd时,需要继承NamespaceHanlder类。dubbo.xsd就是扩展spring的schema文件,即解析dubbo.xsd时,DubboNamespaceHandler需要继承NamespaceHanlder

DubboNamespaceHanlder源码如下:

public class DubboNamespaceHandler extends NamespaceHandlerSupport {

static {
Version.checkDuplicate(DubboNamespaceHandler.class);
}

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 DubboBeanDefinitionParser(AnnotationBean.class, true));
}

}


每一个标签xxx都是对应一个xxxConfig类。主要如下:

5.1. application—->ApplicationConfig

5.2. module ——->ModuleConfig

5.3. registry ——->RegistryConfig

5.4. monitor——-> MonitorConfig

5.5. provider——->ProviderConfig

5.6. consumer——>ConsumerConfig

5.7. protocol ——->ProtocolConfig

5.8. service ———>ServiceBean

5.9. reference——->ReferenceBean

5.10. annotation—->AnnotationBean
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  标签 schema dubbo配置