zoukankan      html  css  js  c++  java
  • [转] 配置文件解析利器-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所有节点的配置合集。

  • 相关阅读:
    设计模式之一(策略模式)
    电脑开机进入不了XP界面
    IBM X系列笔记本通过U盘安装系统方法全攻略
    DELPHI 访问其它电脑文件(局域网)
    笔记本维修小插曲 屏幕不亮处理方式
    delphi 笔记
    电脑小子的新婚夜
    如何得到动态链接库的输出函数(delphi tdump.exe)
    sql server重复数据处理
    如何使用jQuery向asp.net Mvc传递复杂json数据Filter篇
  • 原文地址:https://www.cnblogs.com/pekkle/p/9172437.html
Copyright © 2011-2022 走看看