您的位置:首页 > 其它

Dubbo系列(九)Dubbo源码分析之dubbo中bean的加载

2017-05-17 15:09 483 查看


      Dubbo首先使用com.alibaba.dubbo.config.spring.schema.NamespaceHandler注册解析器,当spring解析xml配置文件时就会调用这些解析器生成对应的BeanDefinition交给spring管理:

[java] view
plain copy

public class DubboNamespaceHandler extends NamespaceHandlerSupport {  

  

    static {  

        Version.checkDuplicate(DubboNamespaceHandler.class);  

    }  

  

    public void init() {  

        //配置<dubbo:application>标签解析器  

        registerBeanDefinitionParser("application", new DubboBeanDefinitionParser(ApplicationConfig.class, true));  

        //配置<dubbo:module>标签解析器  

        registerBeanDefinitionParser("module", new DubboBeanDefinitionParser(ModuleConfig.class, true));  

        //配置<dubbo:registry>标签解析器  

        registerBeanDefinitionParser("registry", new DubboBeanDefinitionParser(RegistryConfig.class, true));  

        //配置<dubbo:monitor>标签解析器  

        registerBeanDefinitionParser("monitor", new DubboBeanDefinitionParser(MonitorConfig.class, true));  

        //配置<dubbo:provider>标签解析器  

        registerBeanDefinitionParser("provider", new DubboBeanDefinitionParser(ProviderConfig.class, true));  

        //配置<dubbo:consumer>标签解析器  

        registerBeanDefinitionParser("consumer", new DubboBeanDefinitionParser(ConsumerConfig.class, true));  

        //配置<dubbo:protocol>标签解析器  

        registerBeanDefinitionParser("protocol", new DubboBeanDefinitionParser(ProtocolConfig.class, true));  

        //配置<dubbo:service>标签解析器  

        registerBeanDefinitionParser("service", new DubboBeanDefinitionParser(ServiceBean.class, true));  

        //配置<dubbo:refenrence>标签解析器  

        registerBeanDefinitionParser("reference", new DubboBeanDefinitionParser(ReferenceBean.class, false));  

        //配置<dubbo:annotation>标签解析器  

        registerBeanDefinitionParser("annotation", new DubboBeanDefinitionParser(AnnotationBean.class, true));  

    }  

 }  

   从这里也可以看到,对应的支持的标签其实不多。所有的 Parser 都封装到了DubboBeanDefinitionParser 中。对应的 class,就是传入的 beanClass。比如 application 的就是ApplicationConfig。 module 的就是 ModuleConfig。经过Parser 的转换, provider.xml 大概可以变成如下的样子(具体的解析不多解释了)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: