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