Обработка переменных среды в Typesafe Config

У меня есть файл конфигурации Typesafe (application.conf). Я хочу переопределить некоторые настройки с помощью переменных системной среды (например, в Переопределение конфигурации с помощью переменные среды в typesafe config), но я хотел бы внести некоторые изменения в значение переменной среды (например, toLowerCase, replace('\', '/'), split("/"))

Итак, у меня было что-то вроде этого:

# C:\Users\...\project_root\sub_project\src\main\resources\application.conf

foo = {
  bar = "baz"
}

И меняю на это:

foo = {
  bar = "baz"
  bar = ${?FOO}
}

Но теперь я хочу сделать это:

foo = {
  bar = "baz"
  bar = ${?FOO.toLowerCase}
}

Когда я запускаю sbt update в своем проекте, у меня есть зависимость Typesafe Config:

[info] Resolving com.typesafe#config;1.2.1 ...

person Michael Lafayette    schedule 29.10.2018    source источник
comment
Почему бы не преобразовать значения после разбора конфигурации в вашем приложении?   -  person Eric    schedule 29.10.2018
comment
См. github.com/lightbend/config/issues/289.   -  person Viktor Klang    schedule 29.10.2018


Ответы (1)


Вместо прямого доступа к конфигурации typesafe вам, вероятно, следует определить своего рода интерфейс в модуле util вашего проекта и получить доступ к вашей конфигурации через этот интерфейс. Таким образом, у вас есть одно централизованное место для получения вашей конфигурации, и это централизованное место может предоставлять дополнительные функции помимо базового хранения и получения значений конфигурации. Кроме того, вы можете использовать библиотеку, которая находится перед конфигурацией typesafe, и получать доступ к значениям через эту библиотеку.

person Michael Lafayette    schedule 10.11.2018