码迷,mamicode.com
首页 > 其他好文 > 详细

archaius源码分析之配置源

时间:2018-01-27 13:41:05      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:tle   listener   obj   res   分享   post   tco   except   ash   

配置源

  配置源定义和实现了获取配置文件的方式。有两种配置源,一种是主动拉去方式获取配置,一种是被动监听方式获取配置

类图结构:

技术分享图片

接口PolledConfigurationSource定义了获取配置的方法

public PollResult poll(boolean initial, Object checkPoint) throws Exception;  

  initial是否是初次获取,checkPoint上次获取的检查点。

  JDBCConfigurationSource 从数据库中获取配置信息。从指定的DataSource中读取指定的key和value字段。

技术分享图片
public PollResult poll(boolean initial, Object checkPoint) throws Exception {
        Map<String, Object> map = new HashMap<String, Object>();
        ...
            conn = getConnection();
            pstmt = conn.prepareStatement(query.toString());
            rs = pstmt.executeQuery();
            while (rs.next()) {
                String key = (String) rs.getObject(keyColumnName);
                Object value = rs.getObject(valueColumnName);
                map.put(key, value);
            }

        ...
        return PollResult.createFull(map);
}
技术分享图片

  URLConfigurationSource从指定url中获取配置信息。从指定的url中读取配置文件。

技术分享图片
public PollResult poll(boolean initial, Object checkPoint)
            throws IOException {    
        if (configUrls == null || configUrls.length == 0) {
            return PollResult.createFull(null);
        }
        Map<String, Object> map = new HashMap<String, Object>();
        for (URL url: configUrls) {
            InputStream fin = url.openStream();
            Properties props = ConfigurationUtils.loadPropertiesFromInputStream(fin);
            for (Entry<Object, Object> entry: props.entrySet()) {
                map.put((String) entry.getKey(), entry.getValue());
            }
        }
        return PollResult.createFull(map);
  }
技术分享图片

WatchedConfigurationSource定义了监听器,当配置发生变化时,调用这些监听器。

    public void addUpdateListener(WatchedUpdateListener l);
    public void removeUpdateListener(WatchedUpdateListener l);
    public Map<String, Object> getCurrentData() throws Exception;

archaius源码分析之配置源

标签:tle   listener   obj   res   分享   post   tco   except   ash   

原文地址:https://www.cnblogs.com/zhangwanhua/p/8365161.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!