Dubbo源码研究

一、Dubbo服务暴露前奏

读取解析Spring Bean,<dubbo:service ... />的解析利用的是Spring可扩展的schema机制。

Spring的可扩展schema机制允许用户自定义标签,并配置自定义标签的处理器NamespaceHandler处理标签配置,比如初始化组件等。Spring中与这个机制相关的类是NamespaceHandlerSupport.java。大家在配置<dubbo:service... />时需要在配置文件上面的<beans>标签头中引入xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"的标签申明,在dubbo包的META-INF中可以找到一个叫spring.handlers的文件,其中指定了dubbo标签对应的处理器:

http\://code.alibabatech.com/schema/dubbo=com.alibaba.dubbo.config.spring.schema.DubboNamespaceHandler

好了,入口已经找到,就是DubboNamespaceHandler了,DubboNamespaceHandler中逻辑很简单,new了好几个DubboBeanDefinitionParser,产生了ServiceBean的BeanDefinition定义。ServiceBean实现了spring的ApplicationListener接口,在该接口的实现方法onApplicationEvent中调用了export()方法。

二、Dubbo服务暴露

    ServiceBean#export()
                        #doExport()
                        #doExportUrls()
                        #doExportUrlsFor1Protocol()  (如果是多个协议则分别调用)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容