#spring-boot #spring-cloud #spring-cloud-config
#spring-boot #spring-cloud #spring-cloud-config
Вопрос:
Я должен реализовать конфигурацию spring cloud для существующего проекта, где у меня есть вариант использования для обработки здесь На некоторые файлы свойств ссылаются другие файлы свойств, такие как logging.propFile=classpath:/cfg/xyz.properties, и эти файлы свойств используются в нескольких местах, таких как
Свойства property = new Properties(); property.load(new FileInputStream(propsPath)); logger = somefactory.createfactory(property.get(«logging.propFile»)); и это фабричное создание определено в другом jar.
Если я перемещу все файлы свойств в репозиторий git, файлы, о которых я упоминал, не будут доступны в пути к классу, и если я перейду к изменению кода, потребуется много изменений в коде.Каков наилучший способ справиться с этой ситуацией. Есть ли какой-либо способ сослаться на один файл свойств в другом в конфигурации spring cloud.
Ответ №1:
Сервер конфигурации Spring Cloud позволяет считывать статические файлы через HTTP. Таким образом, вы можете поместить свой файл свойств references в репозиторий git конфигурации и ссылаться на них через http://<configserver_url>/*/*/<branch_name>/xyz.properties
. Это работает только тогда, когда ваш код может обрабатывать URL-адреса, поэтому FileInputStream
в вашем примере этого не будет.
Смотрите https://cloud.spring.io/spring-cloud-config/multi/multi__serving_alternative_formats.html и https://cloud.spring.io/spring-cloud-config/multi/multi__serving_plain_text.html.
Также обратите внимание на resolvePlaceholders
параметр запроса, значение которого по умолчанию равно true
.
Мы используем это для сохранения нашего logback.xml настройка на сервере конфигурации с помощью настройки logging.config: http://<configserver_url/*/*/master/logback.xml?resolvePlaceholders=false