配置文件解析利器-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所有节点的配置合集。