Dubbo 源码解析08_Dubbo与Spring结合
Posted 快鸟
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Dubbo 源码解析08_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 的协议头,进行不同协议的服务暴露或引用。
执行过程:
-
spring 扫描所有 jar 下
META-INF/spring.handlers
和META-INF/spring.schemas
-
运行
dubbo.jar/META-INF/spring.handlers
下定义的DubboNamespaceHandler
的 init() 方法 -
spring 加载 xml,执行
DubboBeanDefinitionParser
的 parse() 方法,通过RootBeanDefinition将serviceBean 暴露给 spring。(实际调用AutowireCapableBeanFactory.registerBeanDefinition) -
ServiceBean 实现了
ApplicationListener<ContextRefreshedEvent>
,Spring 容器 refresh() 之后,发送 Event 事件,然后 ServiceBean 做服务暴露操作。(服务暴露) -
ReferenceBean 实现了 InitializingBean,在 Bean 实例化过程中会调用 afterPropertiesSet(),然后 ReferenceBean 做服务引用操作。(服务引用)
其中比较重要的是 ServiceBean 和 ReferenceBean。
以上是关于Dubbo 源码解析08_Dubbo与Spring结合的主要内容,如果未能解决你的问题,请参考以下文章