zoukankan      html  css  js  c++  java
  • ribbon源码(3) 配置模块

      ribbon的很多功能可以通过配置进行调整,ribbon通过IClientConfig来获取配置信息,用户可以通过实现IClientConfig来管理配置。

      ribbon也提供了默认的实现(DefaultClientConfigImpl),底层通过Archauis获取配置信息,如果没有配置信息,DefaultClientConfigImpl也为各个配置项设置了默认值。DefaultClientConfigImpl的配置项的格式为:<clientName>.<nameSpace>.<propertyName>,如果IClientConfig没有clientName,则对应格式为:<nameSpace>.<propertyName>。 

      配置模块的结构如下:

      IClientConfig定义了获取配置的方法,ribbon使用IClientConfig来获取配置。DefaultClientConfigImpl是ribbon提供的IClientConfig的实现。

      ClientConfigFactory是创建IClientConfig的工厂模式接口。子类DefaultClientConfigFactory创建DefaultClientConfigImpl。    

      IClientConfigKey为配置的key对象,本质上内部是一个string类型字段。IClientConfig也实现了builder模式,也可以通过builder方式进行初始化。

    DefaultClientConfigImpl核心代码逻辑

    public Object getProperty(IClientConfigKey key){
            String propName = key.key();
            Object value = getProperty(propName);
            return value;
        }
    复制代码
    protected Object getProperty(String key) {
            if (enableDynamicProperties) {
                String dynamicValue = null;
                DynamicStringProperty dynamicProperty = dynamicProperties.get(key);
                if (dynamicProperty != null) {
                    dynamicValue = dynamicProperty.get();
                }
                if (dynamicValue == null) {
                    dynamicValue = DynamicProperty.getInstance(getConfigKey(key)).getString();
                    if (dynamicValue == null) {
                        dynamicValue = DynamicProperty.getInstance(getDefaultPropName(key)).getString();
                    }
                }
                if (dynamicValue != null) {
                    return dynamicValue;
                }
            }
            return properties.get(key);
        }
    复制代码
  • 相关阅读:
    JavaScript 学习笔记 事件二
    auto_ptr
    POJ2299 UltraQuickSort(逆序对个数)
    2016年11月2日22:28:14
    将sql server中的数据倒入Excel(c#)
    线段树成段更新裸题POJ3468
    线段树成断更新裸题hdu1698 Just a Hook
    POJ2828 思维难度较好的一道线段树
    < 弱牛刷贪心给JerryDung&qiuwei大神Orz>最大乘积
    NOIP 2008 传纸条题解[双线程DP]
  • 原文地址:https://www.cnblogs.com/zhangwanhua/p/8777017.html
Copyright © 2011-2022 走看看