Мне нужно обработать относительно сложный набор параметров конфигурации для Java-приложения. Требования примерно:
- Вложенные значения конфигурации со списками, картами и т.д. - не просто пары с ключом/значением
- Несколько конфигурационных файлов, в которых более поздние файлы конфигурации могут интеллектуально переопределять настройки из более ранних файлов конфигурации.
- Несколько ссылок на один и тот же настроенный элемент из разных мест
- Наследуемые сконфигурированные объекты, поэтому новый объект может скопировать конфигурацию из предыдущего объекта, может просто изменить определенные вещи.
- Очень маленький код, необходимый для новых параметров конфигурации - оптимальным было бы просто добавить @Configurable аннотацию к полю или что-то подобное
Теперь я знаю, что Spring выполняет все это определенным образом. Однако у него есть некоторые недостатки, хотя ни один из них не смертелен:
- Spring на самом деле не оптимизирован как язык конфигурации, так как он несколько больше обеспокоен потребностью в зависимостях
- Файлы конфигурации XML больше предназначены для отправки в JAR файл и не изменяются конечным пользователем со всеми настраиваемыми свойствами, на которые ссылается отдельный файл свойств или аналогичный - где мне нужен файл конфигурации, который будет полным, и легко модифицируется конечным пользователем. Конфигурация
- Spring несколько утомительна при обновлении онлайн-конфигурации без прекращения текущих подключений и когда должны быть отдельные примитивы проверки конфигурации, которые должны полностью проверять конфигурацию, но фактически ничего не делают
Итак, я спрашиваю, можете ли вы подумать о каких-либо альтернативах, которые отвечали бы моим требованиям?
Я вроде как YamlBeans, но ему не хватает нескольких функций.