• [转] 配置文件解析利器-Config库


    [From] https://blog.csdn.net/zero__007/article/details/51493851

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

    [java] view plain copy
     
    1. public class Configure {  
    2.     private final Config config;  
    3.   
    4.     public Configure(String confFileName) {  
    5.         config = ConfigFactory.load(confFileName);  
    6.     }  
    7.   
    8.     public Configure() {  
    9.         config = ConfigFactory.load();  
    10.     }  
    11.   
    12.     public String getString(String name) {  
    13.         return config.getString(name);  
    14.     }  
    15. }  

    ConfigFactory.load()会加载配置文件,默认加载classpath下的application.conf,application.json和application.properties文件。当然也可以调用ConfigFactory.load(confFileName)加载指定的配置文件。

    配置内容即可以是层级关系,也可以用”.”号分隔写成一行:

    [java] view plain copy
     
    1. host{  
    2.   ip = 127.0.0.1  
    3.   port = 2282  
    4. }  

    或则

    [java] view plain copy
     
    1. host.ip = 127.0.0.1  
    2. 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外的配置
    例如:

    [java] view plain copy
     
    1. Config firstConfig = ConfigFactory.load("test1.conf");  
    2. Config secondConfig = ConfigFactory.load("test2.conf");  
    3.   
    4. //a.withFallback(b)  a和b合并,如果有相同的key,以a为准  
    5. Config finalConfig = firstConfig.withOnlyPath("host").withFallback(secondConfig);  

    finalConfig中的配置是test1.conf中的host节点的所有配置与test2.conf所有节点的配置合集。

  • 相关阅读:
    [LOJ 6436][PKUSC2018] 神仙的游戏
    [BZOJ 2653] middle
    [WC2018] 州区划分
    [BZOJ 4556][Tjoi2016&Heoi2016]字符串
    [BZOJ 3514]Codechef MARCH14 GERALD07加强版 (CHEF AND GRAPH QUERIES)
    [BZOJ 4573][ZJOI 2016]大♂森林
    Problem 2322. -- [BeiJing2011]梦想封印
    [BZOJ 2555] SubString
    [日常] NOIWC2019 冬眠记
    [BZOJ 4036][HAOI2015]按位或
  • 原文地址:https://www.cnblogs.com/pekkle/p/9172437.html
Copyright © 2020-2023  润新知