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进行调用了。

  • 相关阅读:
    influxdb + cadvisor + grafana 监控 docker容器应用性能
    zabbix_get命令
    【工作笔记】python+influxdb+grafana监控云行情
    沙雕与大婶 | 把5W2H融入你的架构设计吧
    GO系列 | 5分钟入门GO【译】
    Docker深入浅出系列 | 5分钟搭建你的私有镜像仓库
    Docker深入浅出系列 | Swarm多节点实战
    Docker如何给Springboot项目动态传参
    沙雕与大婶 | Mock掉你的外部依赖吧
    ed后缀读音规则
  • 原文地址:https://www.cnblogs.com/liguangming/p/9850792.html
Copyright © 2011-2022 走看看