• 【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源码的知识,请移步 Dubbo源码解读——通向高手之路 的视频讲解:
    http://edu.51cto.com/sd/2e565
  • 相关阅读:
    POJ 1016 不断压缩字符串判断三种结果
    递归的运行机制简单理解
    模拟链表
    输入两个字符串,不用系统提供的函数strcat,自定义函数将两个字符串连接起来。
    信号量多线程同步
    windows 多线程同步技术
    qsort和sort的区别(转)
    大数阶乘位数
    字符串数组qsort排序
    Safecracker
  • 原文地址:https://www.cnblogs.com/kevin-yuan/p/10346574.html
Copyright © 2020-2023  润新知