У меня есть приложение Spring Boot, которое должно подключаться к разным серверам в dev и prod, со многими службами, работающими на этих серверах. К этому моменту я создал такую конфигурацию:

Application.properties:

server.url.srv1=${server.url.base}/srv1
server.url.srv2=${server.url.base}/srv2
server.url.srv3=${server.url.base}/srv3

Application-dev.properties :

server.url.base=http://192.168.86.17

Application-prod.properties:

server.url.base=https://10.11.12.3

Тем не менее, когда я инициализирую аргумент компонента с помощью @Value("${server.url.srv1}"), я получаю строку «$ {server.url.base} / srv1», а не «http://192.168.86.17/srv1» или «https: // 10.11.12.3/srv1 "как и ожидалось.

Это вообще возможно? Так должно быть, если ссылки "$ {}" разрешаются только после загрузки всех файлов конфигурации, но это, похоже, не так.

Я искал ответ как на Spring site в Google (который указал мне на полезный в других отношениях сайт Baeldung) и здесь, но не нашел ничего, имеющего отношение к моему конкретному вопросу.

1
Piotr Sulecki 2 Сен 2020 в 17:39

2 ответа

Лучший ответ

Заполнители в application.properties должны работать. Пожалуйста, обратитесь к образцу проекта, который я добавил вместе с вашим вариантом использования, и он работает должным образом: https : //github.com/itsprav/spring-profile-properties-using-placeholder

1
A Praveen Kumar 2 Сен 2020 в 15:26

Когда вы запускаете свое приложение, вы должны установить определенный профиль пружины, который будет установлен, чтобы получить определенные свойства, определенные ранее.

Есть много способов установить эти профили.

Настройка профилей разными способами (JVM, программно, переменная среды ...)

0
Karllos Ernnesto 2 Сен 2020 в 15:08