Dubbo原理(2)--标签解析

Dubbo在启动中,如何解析它的配置文件。配置文件如图蓝色框内的内容,包括:连向注册中心、远程暴露服务等。配置文件的配置参考:Dubbo用户文档的如下目录:对Dubbo进行配置有多种方法。因为这个配置文件是一个Spring的配置文件,我们启动也是以Spring的方式进行加载启动:Spring来解析配置文件中的标签都会有一个总的接口:BeanDefinitionParser(Bean定义的解析器)他的继承中有一个:DubboBeanDefinitionParser(Du
摘要由CSDN通过智能技术生成

Dubbo在启动中,如何解析它的配置文件。

配置文件如图蓝色框内的内容,包括:连向注册中心、远程暴露服务等。


配置文件的配置参考:Dubbo用户文档的如下目录:

对Dubbo进行配置有多种方法。


因为这个配置文件是一个Spring的配置文件,我们启动也是以Spring的方式进行加载启动:


Spring来解析配置文件中的标签都会有一个总的接口:BeanDefinitionParser(Bean定义的解析器)

他的继承中有一个:DubboBeanDefinitionParser(Dubbo的标签解析器)

其中,parse方法用于解析标签:

当IOC容器一启动,Spring容器一启动,就会来挨个解析标签。

如果在DubboBeanDefinitionParser的parse方法出打一个断点,会发现项目确实是在parse方法处,会挨个解析标签。


标签解析做了什么?

在parse方法中会有一个判断:

  • 如果Bean的类型等于ProtocolConfig、ServiceBean、ProviderConfig、ConsumerConfig,会怎么办:

关于Bean的类型,会在parse方法当中传入进来:

此外,给DubboBeanDefinitionParser的构造器打一个断点,看构造器是如何创建出来的:

构造器的前一步:DubboNamespaceHandler(Dubbo的名称空间处理器)

处理器注册了很多的标签解析器:

  • 如果是application标签进行解析,就是使用DubboBeanDefinitionParser,使用ApplicationConfig.class,相当于封装标签里面的内容:

DubboBeanDefinitionParser传过来的class,其实是在DubboNamespaceHandler中的构造初始(new DubboBeanDefinitionParser(xxx, xxx)),就已经硬性规定的。

每一个标签,有每一个标签对应的xxxConfig。


DubboBeanDefinitionParser的parse方法做什么:

  • 获取标签的属性,为每一个标签的bean定义里面,添加对应的属性的值(类似如下):
  • 解析标签的目的:将标签的每一个属性都解析出来,保存到对应的xxxConfig(类型对象)里面。另外,service标签对应的是ServiceBean,而不是ServiceConfig;reference标签对应的是ReferenceBean。
  • service标签的解析牵扯到服务暴露的过程,reference标签的解析牵扯到服务引用的过程;

大致的标签解析流程图(不含服务暴露/引用的过程):

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值