首页 > 其他 > 详细

archaius源码分析之配置源

时间:2018-01-27 12:21:47      阅读:317      评论:0      收藏:0      [点我收藏+]

配置源

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

类图结构:

技术分享图片

接口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源码分析之配置源

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!