dubbo源码深度解读二之config模块
来源:互联网 发布:js文件md5 编辑:程序博客网 时间:2024/06/15 05:40
前言:config是配置模块,是Dubbo对外的API,用户通过Config使用Dubbo,隐藏Dubbo所有细节。里面包含了dubbo-config-api和dubbo-config-spring。该模块依赖dubbo-common(上篇已经讲过了)和dubbo-rpc(放在后面解读)。
一,dubbo-config-api
这里主要是一些抽象的定义,把配置信息定义为类属性。里面最主要的类为ReferenceConfig和ServiceConfig
1,ReferenceConfig(依赖消费端的配置相关类)
继承关系如下:
大概解释一下每个类(源码中的注释已经解释很清楚了)
(1)AbstractConfig:配置解析的工具方法、公共方法,提供几个主要的方法appendAnnotation,appendProperties,appendParameters,appendAttributes。
(2)AbstractMethodConfig:封装了一些方法级别的相关属性
(3)AbstractInterfaceConfig:封装了接口契约需要的属性
(4)AbstractReferenceConfig:主要是引用实例的配置
而ReferenceConfig中,会获取消费者全局配置,然后进行一个初始化。
2,ServiceConfig(为提供服务端的配置相关类,包含一些运行时数据)
继承关系如下:
可以看出,继承关系跟ReferenceConfig很像,差别在它最后是实现AbstractServiceConfig(服务相关属性(重在使用运维级别))。
ps:这里设计到了一些rpc模块的,到时候再继续解读
二,dubbo-config-spring
首先我们看到META-INF下面的spring.handlers。可以看到
http\://code.alibabatech.com/schema/dubbo=com.alibaba.dubbo.config.spring.schema.DubboNamespaceHandler
接下来我们查看DubboNamespacheHandler
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)); }}
对应关系如下:
对应的每个类源码注解已经写的很清楚了,这里就不重复了。
总结:现在慢慢对dubbo的结构和一些设计思想越来越了解了,接下来将会更加努力看了。
- dubbo源码深度解读二之config模块
- dubbo源码深度解读一之common模块
- dubbo源码深度解读三之container模块
- dubbo源码深度解读四之remoting模块
- dubbo源码深度解读五之rpc模块
- dubbo源码深度解读六之cluster模块
- dubbo源码深度解读七之registery模块
- dubbo源码深度解读一之common模块
- Dubbo源码分析-config
- Dubbo ExtensionLoader源码解读
- dubbo源码解读
- 深度解剖dubbo源码
- 深度解剖dubbo源码
- 深度解剖dubbo源码
- 读懂Dubbo源码必备知识点之二
- nginx源码解读之二--nginx_string_t
- AMPS:内存管理模块源码解读(二)
- Dubbo源码分析之二:spring集成之注解
- 集合 (一个容器) 存储数据
- hdu 6053 (莫比乌斯反演+容斥)
- adb常用命令总结
- Deeply Learned Attributes for Crowded Scene Understanding(WWW dataset)
- qduoj 156 暴力过算我输 思维+单调栈
- dubbo源码深度解读二之config模块
- 914电路原理
- GOLANG中time.After释放的问题
- POJ1740--A New Stone Game(Nin变形)
- 算法训练 寂寞的数
- MySQL备份Percona Xtrabackup安装和卸载
- java得到指定文件大小
- 二维数组中的查找【每日一题】
- PAC4J 初探