В настоящее время у меня нет возможности проверить этот синтаксис самостоятельно, поэтому вопрос:
Произойдет ли замена / переопределение значения, если оно окружено текстом?
Например, я знаю, что:
foo.baseUrl = "http://foo:1234/"
foo.baseUrl = ${?FOO_BASE_URL}
Перезапишет foo.baseURL
, если существует переменная ENV FOO_BASE_URL
.
Что здесь происходит?
foo.baseUrl = "http://foo:1234/"
foo.baseUrl = "http://${?FOO_BASE_URL}:1234/"
Происходит ли переопределение, если существует переменная ENV? Помещение его в строку отрицает это?
2 ответа
Просто запустил быстрый тест, и второе значение заменит первое без средней части. Поэтому, если FOO_BASE_URL
не определен, а application.conf
содержит следующее (обратите внимание на отсутствие "
во второй строке, подстановка переменных не выполняется в двойных кавычках):
foo.baseUrl = "http://foo:1234/"
foo.baseUrl = http://${?FOO_BASE_URL}:1234/
foo.baseUrl = ${?FOO_BASE_URL}
Значение foo.baseUrl
будет http://:1234/
. Не найденная переменная не подставляется. Именно так и определяется поведение, см. Замена раздел для получения дополнительной информации.
Из документов:
Для конфигурации приложения системные свойства Java переопределяют настройки, найденные в файле конфигурации. Это поддерживает указание параметров конфигурации в командной строке.
Итак, да, переменные ENV переопределят переменные, определенные в файле.
Похожие вопросы
Новые вопросы
java
Java - это язык программирования высокого уровня. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег редко используется отдельно и чаще всего используется вместе с [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] и [maven].