[轉] 配置文件解析利器-Config庫
阿新 • • 發佈:2018-06-12
boa test com tail with pri 配置 itl alt
[java] view plain copy
[java] view plain copy
[From] https://blog.csdn.net/zero__007/article/details/51493851
Typesafe的Config庫,純Java寫成、零外部依賴、代碼精簡、功能靈活、API友好。支持Java properties、JSON、JSON超集格式HOCON以及環境變量。
[java] view plain copy- 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
- }
或則
[java] view plain copy- 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所有節點的配置合集。
[轉] 配置文件解析利器-Config庫