Dubbo 源码解析08_Dubbo与Spring结合

Posted 快鸟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Dubbo 源码解析08_Dubbo与Spring结合相关的知识,希望对你有一定的参考价值。

Dubbo 与 Spring 结合

基于 dubbo.jar 内的 META-INF/spring.handlers 配置,Spring 在遇到 dubbo 名称空间时,会回调 DubboNamespaceHandler

所有 dubbo 的标签,都统一用 DubboBeanDefinitionParser 进行解析,基于一对一属性映射,将 XML 标签解析为 Bean 对象。

ServiceConfig.export()ReferenceConfig.get() 初始化时,将 Bean 对象转换 URL 格式,所有 Bean 属性转成 URL 的参数。

然后将 URL 传给协议扩展点,基于扩展点的扩展点自适应机制(Dubbo SPI),根据 URL 的协议头,进行不同协议的服务暴露或引用。

 

执行过程:

  1. spring 扫描所有 jar 下 META-INF/spring.handlersMETA-INF/spring.schemas

  2. 运行dubbo.jar/META-INF/spring.handlers下定义的DubboNamespaceHandler的 init() 方法

  3. spring 加载 xml,执行 DubboBeanDefinitionParser 的 parse() 方法,通过RootBeanDefinition将serviceBean 暴露给 spring。(实际调用AutowireCapableBeanFactory.registerBeanDefinition)

  4. ServiceBean 实现了 ApplicationListener<ContextRefreshedEvent>,Spring 容器 refresh() 之后,发送 Event 事件,然后 ServiceBean 做服务暴露操作。(服务暴露

  5. ReferenceBean 实现了 InitializingBean,在 Bean 实例化过程中会调用 afterPropertiesSet(),然后 ReferenceBean 做服务引用操作。(服务引用

其中比较重要的是 ServiceBean 和 ReferenceBean。

 

以上是关于Dubbo 源码解析08_Dubbo与Spring结合的主要内容,如果未能解决你的问题,请参考以下文章

dubbo源码学习 : spring 自定义标签

Dubbo源码解析:服务暴露与发现

【dubbo源码】5.配置信息解析-注解版

深入Dubbo源码 - Dubbo配置文件解析

Dubbo启动源码解析一

dubbo系列dubbo启动过程源码解析