Как параметризовать путь поиска местоположений для повторного использования в других файлах конфигурации - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть разные файлы (файлы yml & xml), где я жестко прописываю один и тот же путь к папке, содержащей мои файлы конфигурации. Я хочу параметризовать этот путь, чтобы иметь возможность перемещать свою конфигурацию и изменять свой параметр только один раз.

Мой bootstrap.yml:

...
      cloud:
        config:
          failFast: true     
          server:
            bootstrap: true
            prefix: /config
            native:
              search-locations: file:///C:/dev/workspace/application/config/{profile}

Мой application-dev.yml:

...
logging:
  config: file:///C:/dev/workspace/application/config/{profile}/log4j2-dev.xml

Моя интеграция-config.xml:

<context:property-placeholder location="file:///C:/dev/workspace/application/config/${spring.profiles.active}/application-${spring.profiles.active}.properties" />

Как мне этого достичь? Какова лучшая практика в этом случае? Или это даже хорошая практика для параметризации пути местоположений поиска для файловой системы сервера Spring Config?

1 Ответ

0 голосов
/ 18 сентября 2018
  1. Во-первых, я почти не использую файл конфигурации (свойства yml xml ...) напрямую в локальной файловой системе (вне classpath) даже для локального теста. А для spring-cloud-config что, если вы используете удаленное местоположение для хранения конфигурации, вопрос может отличаться.

  2. Во-вторых, вы использовали какой-нибудь инструмент менеджера проектов, например maven или gradle? а maven - это инструмент по умолчанию для сборки проектов весенней загрузки. А для maven есть плагин, такой как Maven Resources Plugin для параметризации вашей конфигурационной переменной на pom.xml, который может помочь вам изменить параметр только один раз для всех переменных в одном файле на этапе сборки, и такой же как gradle.

  3. Для spring-cloud-config в него можно перенести практически все свойства конфигурации. Означает, что вы можете переместить свои свойства конфигурации из application-dev.yml и integration-config.xml в файл конфигурации spring-cloud-config, который в вашем случае равен file:///C:/dev/workspace/application/config/{profile}, и он будет загружаться как переменные env во время выполнения для весенней автоконфигурации или который вы можете @Autowired к вашему Environment что делать, если вы хотите получить его вручную.

...