说明:当前dubbo的版本为2.7.6
一、dubbo配置文件标签的解析过程
说明: spring框架在读取配置文件的时候,会调用BeanDefinitionParser(是一个接口),来进行配置文件的解析,因为我们使用是dubbo框架,编写的是dubbo的配置文件,所以最终会调用DubboBeanDefinitionParser解析器,来进行配置文件中标签的解析



这些类型的解析器,是怎么来的呢?
在DubboBeanDefinitionParser实例创建的时候,会给容器中注入各种类型的解析器。

二、dubbo中服务的暴露过程
说明:dubbo中服务的暴露是由ServiceBean这个解析器来进行完成的

这个类实现了InitializingBean这个接口,

所以在ServiceBean实例对象创建完毕之后,会回调afterPropertiesSet这个方法,来进行ServiceBean实例属性的设置。属性设置完毕之后,会回调ApplicationListener这个接口中的

回调用对应的。DubboBootstrapApplicationListener中的 刷新事件的时候,会启动

在这个方法中:

exportServices:

这个时候就会调用ServiceConfig 这个类中的

doExport:

doExportUrls:

doExportUrlsFor1Protocol:

PROTOCOL:的是现实RegistryProtocol、DubboProtocol调用这两个实现类的export方法,把包装好的执行器传递进去。
RegistryProtocol:

doLocalExport:

DubboProtocol:

openServer:

createServer:

Exchangers.bind:

getExchanger(url).bind(url, handler)

Transporters.bind:

getTransporter().bind

三、dubbo中服务引用的过程
spring配置文件的解析过程,如一所示
服务引用的解析器为ReferenceBean

ReferenceConfig:服务引用实例的创建过程

init()

createProxy()

REF_PROTOCOL:它的实现类是RegistryProtocol、DubboProtocol,调用注册中心的refer方法,最终会调用DubboProtocol的refer方法,过程和上面的服务暴露差不多。
总结: 底层通过Nettty和注册中心建立,链接,然后获取,引用的代理对象。










