源码分析Dubbo前置篇

  • 时间:
  • 浏览:0

Step2:根据不同的标签解析特殊属性。

Step1:解析id属性,本来我DubboBeanDefinitionParser对象的required属性为true,本来我id为空,则根据如下规则构建5个多多id。

dubbo自定义标签与命名空间实在现代码在模块dubbo-config中,其核心实现如下:

从这还可以不能 能看出,dubbo自定义的标签主要包括:application、module、registry、monitor、provider、consumer、protocol、service、reference、annotation,其具体解析实现类主要包括:DubboBeanDefinitionParser(基于xml配置文件)、AnnotationBeanDefinitionParser(基于注解),下文会完整篇 分析上述5个多多解析类的实现。

dubbo命名空间实现handler,其全路径:com.alibaba.dubbo.config.spring.schema.DubboNamespaceHandler,其源码实现如下:

   在dubbo-config-spring模块下的 src/main/resouce/META-INF中分别定义dubbo.xsd、spring.handlers、spring.schemas。

   关于Spring如保新增命名空间与标签,在源码分析ElasticJob时本来我完整篇 介绍过,再这里就不做 不多重复,如需了解,请查看:https://blog.csdn.net/prestigeding/article/details/79751023

本节就讲解到这里了,下一篇将重点分析ServiceBean(服务提供者启动流程)。

据我目前所掌握的知识,Spring在对象实例化,一般有你是什么措施来对Bean做其他定制化除理。

Step3:解析标签,将属性与值填充到BeanDefinition的propertyValues中。最终返回BeanDefinition实例,供Spring实例化Bean。

亲戚亲戚朋友应该知道,Spirng的配置支持xml配置文件与注解的措施,故Dubbo也支持你是什么配置措施,xml与注解措施。

上述本来我解答了Dubbo自定义标签的解析实现,主要完成了ApplicationConfig、RegistryConfig、ServiceBean、ReferenceBean实例的初始化,那那此后后 构建与注册中心的连接、服务提供者那此后后 会向注册中心注册服务,服务消费者向注册中心订阅服务呢?

本节主要阐述如下5个多多难题:

   上边通过dubbo提供的dubbo:application、dubbo:registry、dubbo:protocol、dubbo:provider、dubbo:service分别定义dubbo应用进程名、注册中心、协议、服务提供者参数默认值、服务提供者,那此配置上边的实现原理是那此呢?是如保启动并发挥相关作用的呢?

bean解析器的主要目的本来我将上述标签,解析成对应的BeanDifinition,以便Spring构建上述类的实例。

原文发布时间为:2019-01-24

本文作者:丁威,《RocketMQ技术内幕》作者。

本文来自上边件兴趣圈,了解相关信息还可以 关注上边件兴趣圈。

所谓的执行相关功能如下:

浏览表格中所有Bean的声明,发现了5个多多类非常特殊:

知识点:dubbo:provider是配置服务提供者的默认参数,在dubbo spring配置文件中还可以 配置多个dubbo:provider,那dubbo:service标签如保选用5个多多离米 的dubbo:provider作为其默认参数呢?有你是什么措施:

通过上述步骤,亲戚亲戚朋友本来我知道本来我成功解析注册中心、服务提供者、服务消费者的配置元信息,并将实在例化,按照亲戚亲戚朋友的思路,配置对象生成后,下一步应该是实现Dubbo服务的注册与发现机制,但代码中无法找到相关代码。

接下来从使用dubbo的宽度,从配置文件入手:

ServiceBean(服务提供者)与ReferenceBean(服务消费者)比较特殊,实现了Spring与Bean生命周期相关的接口。

BeanDefinitionParser:Spring定义的bean解析器,要实现自定义标签,则还要实现该接口,本来我通过NamespaceHandlerSupport将Bean定义解析器注册到Spring bean解析器中。从接口中还可以 看出,其终极目标本来我将Element element(xml节点)解析成BeanDefinition,有关于Spring BeanDefinition,请参考:https://blog.csdn.net/prestigeding/article/details/50490206

都看这里,不免有其他小激动,似乎本来我摸到Dubbo服务注册与发现机制(Dubbo服务提供者、Dubbo服务消费者、注册中心的启动流程入口点了,下一步本来我分析ServiceBean、ReferenceBean的实现原理,试图揭开Dubbo服务注册与发现机制,该帕累托图内容将在下一篇中完整篇 分析。

注:包名:com.alibaba.dubbo.config

注解配置措施的解析入口类:AnnotationBeanDefinitionParser,也是基于Spring注解解析逻辑,这帕累托图在将在未来《Spring系列进阶篇-源码分析注解解析实现原理》中完整篇 分析,目前暂未深究,读者亲戚亲戚朋友们,本来我有兴趣,还可以 以AnnotationBeanDefinitionParser为入口,进行进一步的分析。

DubboBeanDefinitionParser构造函数如下:

本节不拷贝DubboBeanDefinitionParser根据xml定义的标签与属性转加在BeanDefinitionParser的每一行代码,本节只给出其大体关键点。