dubbo源碼解析(一)

1.設計配置屬性和 JavaBean

com.alibaba.dubbo.config.ApplicationConfig.java
com.alibaba.dubbo.config.ModuleConfig.java
...

2.編寫 XSD 文件

dubbo-config/dubbo-config-spring/src/main/resources/META-INF/dubbo.xsdhtml

3.編寫 NamespaceHandler 和 BeanDefinitionParser 完成解析工做

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 DubboBeanDefinitionParser(AnnotationBean.class, true));
  }
}

4.編寫 spring.handlers 和 spring.schemas 串聯起全部部件

dubbo-config/dubbo-config-spring/src/main/resources/META-INF/spring.handlersjava

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

dubbo-config/dubbo-config-spring/src/main/resources/META-INF/spring.schemasspring

http\://code.alibabatech.com/schema/dubbo/dubbo.xsd=META-INF/dubbo.xsd

5.在 Bean 文件中應用

dubbo-demo/dubbo-demo-provider/src/main/resources/META-INF/spring/dubbo-demo-provider.xmlapp

<dubbo:application name="demo-provider" owner="programmer" organization="dubbox"/>
相關文章
相關標籤/搜索