1 Star 1 Fork 1

快鸟 / dubbo2.6demo

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
08_Dubbo与Spring结合.md 1.64 KB
一键复制 编辑 原始数据 按行查看 历史
快鸟 提交于 2020-05-30 17:56 . udpate

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 源码的知识,请点击课程《Dubbo源码解读——通向高手之路》

Dubbo源码解读

Java
1
https://gitee.com/kkk001/dubbo2.6demo.git
git@gitee.com:kkk001/dubbo2.6demo.git
kkk001
dubbo2.6demo
dubbo2.6demo
master

搜索帮助