Чи підтримує змінні середовища application.yml?


110

Я спробував використати env змінні у моїй конфігурації application.yml, наприклад:

spring:
  main:
    show_banner: false

---

spring:
  profiles: production
server:
  address: $OPENSHIFT_DIY_IP
  port: $OPENSHIFT_DIY_PORT

але змінні env не вирішені. Чи повинен я надати інше позначення?

Наприклад, у Rails можна використовувати <% = ENV ['FOOVAR']%>

Єдина альтернатива - запустити додаток, наприклад:

java -jar my.jar --server.address=$OPENSHIFT_DIY_IP --server.port=$OPENSHIFT_DIY_PORT

Відповіді:


146

Спробуйте ${OPENSHIFT_DIY_PORT}(звичайне позначення заповнення весни). Дивіться тут документи.


Це саме те, що мені було потрібно:app.name=MyApp app.description=${app.name} is a Spring Boot application
jurassix

2
Просто для того, щоб зазначити - якщо ви використовуєте kotlin, вам потрібно покласти свою посилання в лапки та уникнути $напр.root: "\${LOGGING_LEVEL_ROOT:info}"
Edward

Хлопці, як ми можемо йти про проходження OPENSHIFT_DIY_PORT через unix cli при запуску програми? Я знаю, що ми можемо використовувати -D для передачі параметрів заміщення, але чи це також працює для env змінних? Напр .: nohup java -Xmx1024m -jar -Dspring.profiles.active = "що завгодно". Чи є спосіб зробити це з env vars?
Ігор Донін

@IgorDonin, чи об'єднання змінних призначень та програмного виклику буде варіантом для вас? E. g .:$MY_ENV=value && java -jar ...
PAX

84

Ви навіть можете додати значення за замовчуванням, якщо змінна середовища не передбачена:

logging:
  level:
    root: ${LOGGING_LEVEL_ROOT:info}

5
Я знайшов цей синтаксис у додатку, який я успадкував, і не зміг знайти весняні документи, які це показують. Досить очевидно, що відбувається, але було б непогано знайти документи для цього. Дякую за те, що ви поділилися - зараз я впевненіший у своєму висновку.
преподобний

Чи використовується значення за замовчуванням у конфігурації UB чи це прямо вказано можливо?
anddero
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.