Dubbo源码分析之XML的Bean解析

Posted xjz1842

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Dubbo源码分析之XML的Bean解析相关的知识,希望对你有一定的参考价值。

      本地暴露的代码是基于 .2.7.0

   前面介绍了dubbo的扩展机制 ,接下来,看下Dubbo是如何加载xml中的bean。

     我门可以看到Dubbo的通常是这样子配置的,这个XMl的xsd是dubbo自己定义的。从源码里可以看到有个名字叫dubbo.xsd的文件, ,解析xml的是要在Resources目录下,新建两个文件,名字是spring.schemas和springHandlers,  至于为什么是这两个名字,是Spring的SPI扩展机制规定,相信经过前面的DUbbo的SPI机制的了解,对于这个xml的SPI也会更加清楚,它里面肯定是代码里写死了,加载规定的文件名去扩展。

        配置了这个后,Spring会自动配置的Handler类去对应的xml文件,那么接下来可以看出DubboNamespaceHandler类就是解析xml的。

        可以看到, dubbo要注册这个多bean的解析类,前面elementName的名字就是对应xml标签的名字. 接下来看下dubbo是如果解析的。

  首先,解析类是要继承BeanDefinitionParser类, 这里主要是会调用parse方法去解析xml

  

           Spring中Bean的注册,都是通过BeanDefiniton来注册到一个Map中去。

  这个可以看出 <dubbo:service 中ref标签,是往BeanDefinition中去加一个属性的,value值是一个RuntimeBeanReference的对象,里面包装的实现ref的实现类。 

 总结:

        今天主要是对dubbo解析自定义标签的流程,做了一个大致的分析。希望可以坚持写下去。

 

以上是关于Dubbo源码分析之XML的Bean解析的主要内容,如果未能解决你的问题,请参考以下文章

spring源码深度解析— IOC 之 开启 bean 的加载

Spring源码分析bean的加载

dubbo源码分析-从xml到我们认识的Java对象

Dubbo之服务暴露源码分析

Dubbo源码分析之ExtensionLoader加载过程解析

dubbo源码分析8——服务暴露概述