说明:当前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和注册中心建立,链接,然后获取,引用的代理对象。