Я думаю https://github.com/typesafehub/config это именно то, что вы ищете. Формат называется HOCON для Оптимизированная для человека нотация объекта конфигурации , и это супер-набор JSON .
Примеры HOCON :
HOCON , который также действителен JSON :
{
"foo" : {
"bar" : 10,
"baz" : 12
}
}
HOCON также поддерживает стандартный формат свойств, поэтому также допустимо следующее:
foo.bar=10
foo.baz=12
Одной из функций, которые я нахожу очень полезными, является наследование, которое позволяет создавать слои конфигурации. Например, библиотека будет иметь reference.conf
, а приложение, использующее библиотеку, будет иметь application.conf
. Настройки в application.conf
заменят значения по умолчанию в reference.conf
.
Стандартное поведение для загрузки конфигов:
Удобный метод ConfigFactory.load () загружает следующее
(первые в списке имеют более высокий приоритет):
- системные свойства application.conf (все ресурсы на пути к классам с
это имя)
- application.json (все ресурсы на пути к классам с этим
имя)
- application.properties (все ресурсы на пути к классам с этим
имя)
- reference.conf (все ресурсы в classpath с этим именем)