Реализовать специфичную для уровня структуру для файлов `.properties` - PullRequest
0 голосов
/ 28 августа 2018

Я пытаюсь реализовать систему резервирования для своих свойств для уровня.

Я знаю, что более продвинутые фреймворки, такие как Spring, имеют встроенную поддержку для этого, но я использую более минимальный фреймворк Spark Java.

Скажем, у меня есть следующая структура -

src/
  main/
    resources/
      properties/
        dev/
          |- application.properties
          |- ValidationMessages.properties
          |- log4j.properties
        prod/
          |- application.properties
          |- ValidationMessages.properties
          |- log4j.properties
        test/
          |- application.properties
          |- ValidationMessages.properties
          |- log4j.properties

        application.properties
        ValidationMessages.properties
        log4j.properties

Я бы хотел, чтобы свойства были получены следующим образом. Предположим, у меня есть системная конфигурация APP.TIER, которая позволяет мне знать во время выполнения, каков текущий уровень (test, dev, prod и т. Д.) *

  1. Любой «общий» файл верхнего уровня (например, properties/application.properties) должен применяться ко всем уровням
  2. Любые специфичные для уровня свойства в (например, properties/${APP.TIER}/application.properties) должны переопределять общие значения

По крайней мере, со свойствами приложения я могу загрузить их программно в начале моего main() метода и сделать их доступными для всего приложения ( пример ). Я также могу контролировать порядок их загрузки, поэтому я могу вручную применить вышеупомянутую резервную логику.

Однако для сторонних плагинов (например, ValidationMessages.properties используется Hibernate или log4j.properties используется log4j) я не могу контролировать, как загружаются свойства.

Существует ли универсальная структура, поддерживающая этот тип поиска свойств? Я знаю, что maven поддерживает профили и фильтрацию, но это означает, что мне придется создавать отдельный JAR-файл для каждого уровня, что не кажется хорошей практикой.

...