В настоящее время у меня нет возможности проверить этот синтаксис самостоятельно, поэтому вопрос:

Произойдет ли замена / переопределение значения, если оно окружено текстом?

Например, я знаю, что:

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? Помещение его в строку отрицает это?

0
Spanky 14 Мар 2018 в 00:23

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/. Не найденная переменная не подставляется. Именно так и определяется поведение, см. Замена раздел для получения дополнительной информации.

1
tilde 7 Авг 2018 в 21:10

Из документов:

Для конфигурации приложения системные свойства Java переопределяют настройки, найденные в файле конфигурации. Это поддерживает указание параметров конфигурации в командной строке.

Итак, да, переменные ENV переопределят переменные, определенные в файле.

-1
George Armstrong 20 Мар 2018 в 06:40