配置中心 Apollo 源码解析 —— 客户端 API 配置(三)之 ConfigFile

本文详细解析了Apollo客户端的ConfigFile接口及其子类,包括AbstractConfigFile、PropertiesConfigFile和PlainTextConfigFile等,阐述了它们在处理不同类型的配置文件(如Properties、XML、JSON、YAML)中的作用和实现细节。
摘要由CSDN通过智能技术生成

摘要: 原创出处 http://www.iocoder.cn/Apollo/client-config-api-3/ 「芋道源码」欢迎转载,保留摘要,谢谢!


������关注微信公众号:【芋道源码】有福利:
1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
3. 您对于源码的疑问每条留言将得到认真回复。甚至不知道如何读源码也可以请教噢
4. 新的源码解析文章实时收到通知。每周更新一篇左右

> 5. 认真的源码交流微信群。

1. 概述

老艿艿:本系列假定胖友已经阅读过 《Apollo 官方 wiki 文档》 ,特别是 《Java 客户端使用指南》

本文接 《Apollo 源码解析 —— 客户端 API 配置(二)之一览》 一文,分享 ConfigFile 接口,及其子类,如下图:

ConfigFile 类图

从实现上,ConfigFile 和 Config 超级类似,所以本文会写的比较简洁。

  • Config 基于 KV 数据结构。
  • ConfigFile 基于 String 数据结构。

2. ConfigFile

《Apollo 源码解析 —— 客户端 API 配置(一)之一览》「3.2 ConfigFile」 中,有详细分享。

3. AbstractConfigFile

com.ctrip.framework.apollo.internals.AbstractConfigFile ,实现 ConfigFile、RepositoryChangeListener 接口,ConfigFile 抽象类,实现了 1)异步通知监听器、2)计算属性变化等等特性,是 AbstractConfig + DefaultConfig 的功能子集

3.1 构造方法

private static final Logger logger = LoggerFactory.getLogger(AbstractConfigFile.class);

/**
 * ExecutorService 对象,用于配置变化时,异步通知 ConfigChangeListener 监听器们
 *
 * 静态属性,所有 Config 共享该线程池。
 */
private static ExecutorService m_executorService;

/**
 * Namespace 的名字
 */
protected String m_namespace;
/**
 * ConfigChangeListener 集合
 */
private List m_listeners = Lists.newCopyOnWriteArrayList();

protected ConfigRepository m_configRepository;
/**
 * 配置 Properties 的缓存引用
 */
protected AtomicReference m_configProperties;

static {
    m_executorService = Executors.newCachedThreadPool(ApolloThreadFactory.create("ConfigFile", true));
}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值