Java中的人类可编辑JSON或类似YAML的程序配置

ana*_*rex 10 java configuration hocon

是否存在类似于C++的libconfig的Java库,其中配置文件以类似JSON的格式存储,可以由人类编辑,然后从程序中读取?

我不想使用Spring或任何更大的框架.我正在寻找的是一个小型,快速,独立的库.我看了java.util.Properties,但它似乎不支持分层/嵌套配置数据.

mgu*_*mon 19

我认为https://github.com/typesafehub/config正是你要找的.该格式称为HOCON for Human-Optimized Config Object Notation,它是一套超级JSON.

HOCON的例子:

HOCON也是有效的JSON:

{
    "foo" : {
        "bar" : 10,
        "baz" : 12
    }
}
Run Code Online (Sandbox Code Playgroud)

HOCON还支持标准属性格式,因此以下内容也是有效的:

foo.bar=10
foo.baz=12
Run Code Online (Sandbox Code Playgroud)

我发现非常有用的功能之一是继承,这允许您进行图层配置.例如,一个库有一个reference.conf,而使用该库的应用程序将有一个application.conf.在该设置application.conf将覆盖默认值reference.conf.

加载配置的标准行为:

便捷方法ConfigFactory.load()加载以下内容(首先列出的是更高优先级):

  • 系统属性application.conf(具有此名称的classpath上的所有资源)
  • application.json(具有此名称的classpath上的所有资源)
  • application.properties(具有此名称的classpath上的所有资源)
  • reference.conf(具有此名称的classpath上的所有资源)