Dubbo源码研究

一、Dubbo服务暴露前奏

读取解析Spring Bean,的解析利用的是Spring可扩展的schema机制。

Spring的可扩展schema机制允许用户自定义标签,并配置自定义标签的处理器NamespaceHandler处理标签配置,比如初始化组件等。Spring中与这个机制相关的类是NamespaceHandlerSupport.java。大家在配置时需要在配置文件上面的标签头中引入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()  (如果是多个协议则分别调用)

你可能感兴趣的:(Dubbo源码研究)