计划阅读调试下Dubbo的源码,结合官方源码分析Dubbo,自身再分析总结
本文对应的Dubbo 服务导出
介绍
Dubbo 导出服务分为三个部分:
- 前置工作:检查参数,组装默认值,组装URL
- 导出服务:导出服务到本地(
InJvmExporter
),和导出服务到远程- 注册服务:向注册中心注册服务用于服务发现
源码分析
前置工作
过程起始于ServiceBean#onApplicationEvent
,ServiceBean
用于连接Dubbo和Spring。Dubbo在收到事件通知之后就会导出服务。
1 |
|
其中isDelay方法,含义与字面意义是相反的
1 | private boolean isDelay() { |
例如如果provider中配置了delay为10,则返回false,而未配置delay则为true
之后进入export方法
1 | public synchronized void export() { |
上面代码逻辑比较简单,继续进入doExport方法
1 | protected synchronized void doExport() { |
上面的逻辑比较复杂,主要做了如下事情:
对<dubbo:service interface=””…> 合理性校验
对application module registers等配置类赋值以及校验
对ref合理性进行校验
对stub本地存根以及mock本地伪装类进行合理性校验
暴露Urls
后续介绍核心部分doExportUrls