dubbo源碼分析2 -- 解析dubbo文件

dubbo在gitHub上的地址是https://github.com/apache/incubator-dubbo

解析dubbo命名空間

在dubbo-config-spring下面有個spring.handlers,在spring中會根據這個配置文件尋找到別的命名空間 。

http\://code.alibabatech.com/schema/dubbo=com.alibaba.dubbo.config.spring.schema
.DubboNamespaceHandler
public class DubboNamespaceHandler extends NamespaceHandlerSupport {

  static {
       Version.checkDuplicate(DubboNamespaceHandler.class);
   }

   public void init() {
       registerBeanDefinitionParser("application", new DubboBeanDefinitionParser(ApplicationConfig.class, true));
       registerBeanDefinitionParser("module", new DubboBeanDefinitionParser(ModuleConfig.class, true));
       registerBeanDefinitionParser("registry", new DubboBeanDefinitionParser(RegistryConfig.class, true));
       registerBeanDefinitionParser("monitor", new DubboBeanDefinitionParser(MonitorConfig.class, true));
       registerBeanDefinitionParser("provider", new DubboBeanDefinitionParser(ProviderConfig.class, true));
       registerBeanDefinitionParser("consumer", new DubboBeanDefinitionParser(ConsumerConfig.class, true));
       registerBeanDefinitionParser("protocol", new DubboBeanDefinitionParser(ProtocolConfig.class, true));
       registerBeanDefinitionParser("service", new DubboBeanDefinitionParser(ServiceBean.class, true));
       registerBeanDefinitionParser("reference", new DubboBeanDefinitionParser(ReferenceBean.class, false));
       registerBeanDefinitionParser("annotation", new AnnotationBeanDefinitionParser());
   }

}

<dubbo:application name=“test” logger=“slf4j”/> 解析封裝成ApplicationConfig…
<dubbo:reference interface=“com.test.TestService” id=“testService” version=“1.0.0”/>封裝成ReferenceBean
<dubbo:service interface=“com.test.TestService” ref=“testService” version=“1.0.0”/>封裝成ServiceBean

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章