zoukankan      html  css  js  c++  java
  • dubbo源码解析(一)

    1. 在dubbo包下/META-INF/spring.handlers这个文件中定义了。在spring加载时首先会扫描这个配置文件
    文件内容如下
    http://code.alibabatech.com/schema/dubbo=com.alibaba.dubbo.config.spring.schema.DubboNamespaceHandler

    引用了一个类DubboNamespaceHandler,这个类实现了NamespaceHandlerSupport这个接口
    实现了这个接口有什么用呢?
    以后再看

    2. spring在加载时会调用NamespaceHandlerSupport#init()这个方法

    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));
        }

    这个方法根据配置文件中各个配置项,将对应的配置转换为对应的配置信息

    这里都new 了DubboBeanDefinitionParser这个类,这个类有两个构造参数一个是配置类,另外一个是是否required

    这个类因为实现了BeanDefinitionParser接口,所以实现了接口的parse方法

    public BeanDefinition parse(Element element, ParserContext parserContext)

    这个方法会在spring初始化的时候被调用,具体什么时候调用要看springbean的生命周期了

    在这个方法内注册了对应的beanClass,,将对应的beanClass注册到spring容器中。

    这样就可以在其它地方对bean进行调用了。

  • 相关阅读:
    Leetcode Array 4 Median of Two Sorted Arrays
    vscode Python Pylint(代码检测插件)
    Leetcode Array 1 twoSum
    mysql 配置 安装和 root password 更改
    vscode 编译调试c/c++的环境配置
    chm文件打不开的解决办法
    A + B Problem II
    欢天喜地七仙女——代码规范与计划
    欢天喜地七仙女——项目系统设计与数据库设计
    欢天喜地七仙女——团队Gitee实战训练
  • 原文地址:https://www.cnblogs.com/liguangming/p/9850792.html
Copyright © 2011-2022 走看看