配置文件解析利器-Config库

TypeSafe Config使用

 

================typesafe config的使用====================

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

#1、加入依赖包 config-1.2.1.jar

#2、加载配置

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所有节点的配置合集。
 GitHub:https://github.com/typesafehub
posted @ 2018-08-13 10:20  舞羊  阅读(2230)  评论(0编辑  收藏  举报