Весенний облачный конфиг-сервер. Переменные среды в свойствах
Я настроил сервер Spring Cloud Config следующим образом:
@SpringBootApplication
@EnableAutoConfiguration
@EnableConfigServer
public class ConfigServer {
public static void main(String[] args) {
SpringApplication.run(ConfigServer.class, args);
}
}
Я использую «родной» профиль, поэтому свойства выбираются из файловой системы:
server.port=8888
spring.profiles.active=native
spring.cloud.config.server.native.search-locations: classpath:/global
Теперь самое сложное в том, что некоторые свойства содержатпеременные среды, Свойства в 'global / application-production.properties' настроены так:
test=${DOCKER_HOST}
Когда я запускаю Config Server - все работает нормально. Однако, когда я получаю доступHTTP: // локальный: 8888 / TestApp / производство Я вижу это:
{
name: "testapp",
profiles: [
"production"
],
label: null,
version: null,
propertySources: [
{
name: "classpath:/global/application-production.properties",
source: {
test: "${DOCKER_HOST}"
}
}
]
}
Таким образом, значение из переменной ENV не заменяет $ {DOCKER_HOST}, а скорее возвращает как есть.
Но если я получу доступHTTP: // локальный: 8888 / application-production.properties тогда результат не JSON, а обычный текст:
test: tcp://192.168.99.100:2376
Весенняя документация гласит:
Представления YAML и свойств имеют дополнительный флаг (предоставленный как булевский параметр запроса resolPlaceholder), чтобы сигнализировать о том, что заполнители в исходных документах в стандартной форме Spring $ {…} должны быть разрешены в выходных данных, где это возможно, перед визуализацией. Это полезная функция для потребителей, которые не знают о соглашениях-заполнителях Spring.
По какой-то причинеresolvePlaceholders не работает для представления JSON, поэтому клиенты конфигурации сервера должны знать обо всех переменных ENV, настроенных на сервере.
Можно ли форсировать JSON-представление?resolvePlaceholders так же, как представление простого текста (свойства)?