配置文件解析利器-Config库

本文介绍Typesafe的Config库,该库使用纯Java编写,具备零外部依赖的特点。支持多种配置格式,包括Javaproperties、JSON及HOCON等。文章还详细说明了如何加载配置文件、处理配置冲突的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


       Typesafe的Config库,纯Java写成、零外部依赖、代码精简、功能灵活、API友好。支持Java properties、JSON、JSON超集格式HOCON以及环境变量。
public class Configure {
    private final Config config;

    public Configure(String confFileName) {
        config = ConfigFactory.load(confFileName);
    }

    public Configure() {
        config = ConfigFactory.load();
    }

    public String getString(String name) {
        return config.getString(name);
    }
}
ConfigFactory.load()会加载配置文件,默认加载classpath下的application.conf,application.json和application.properties文件。当然也可以调用ConfigFactory.load(confFileName)加载指定的配置文件。

配置内容即可以是层级关系,也可以用”.”号分隔写成一行:
host{
  ip = 127.0.0.1
  port = 2282
}
或则
host.ip = 127.0.0.1
host.port = 2282
即json格式和properties格式。(貌似*.json只能是json格式,*.properties只能是properties格式,而*.conf可以是两者混合,而且配置文件只能是以上三种后缀名)

如果多个config 文件有冲突时,解决方案有:
1. a.withFallback(b) //a和b合并,如果有相同的key,以a为准
2. a.withOnlyPath(String path) //只取a里的path下的配置
3. a.withoutPath(String path) //只取a里出path外的配置
例如:
Config firstConfig = ConfigFactory.load("test1.conf");
Config secondConfig = ConfigFactory.load("test2.conf");

//a.withFallback(b)  a和b合并,如果有相同的key,以a为准
Config finalConfig = firstConfig.withOnlyPath("host").withFallback(secondConfig);
finalConfig中的配置是test1.conf中的host节点的所有配置与test2.conf所有节点的配置合集。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值