Unterstützt application.yml Umgebungsvariablen?


109

Ich habe versucht, env-Variablen in meiner application.yml-Konfigration zu verwenden, wie:

spring:
  main:
    show_banner: false

---

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

Die env-Variablen werden jedoch nicht aufgelöst. Muss ich eine andere Notation angeben?

In Rails können Sie zB <% = ENV ['FOOVAR']%> verwenden

Die einzige Alternative besteht darin, die App wie folgt auszuführen:

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

Antworten:


145

Versuchen Sie es ${OPENSHIFT_DIY_PORT}(die übliche Spring-Platzhalternotation). Sehen Sie hier für Dokumente.


Dies war genau das, was ich brauchte:app.name=MyApp app.description=${app.name} is a Spring Boot application
Jurassix

2
Nur um darauf hinzuweisen - wenn Sie Kotlin verwenden, müssen Sie Ihre Referenz in Anführungszeichen setzen und dem $zBroot: "\${LOGGING_LEVEL_ROOT:info}"
Edward

Leute, wie können wir den OPENSHIFT_DIY_PORT beim Starten der Anwendung über Unix Cli übergeben? Ich weiß, dass wir -D verwenden können, um Überschreibungsparameter zu übergeben, aber funktioniert das auch für env-Variablen? Beispiel: nohup java -Xmx1024m -jar -Dspring.profiles.active = "was auch immer". Gibt es eine Möglichkeit, dies mit env vars zu tun?
Igor Donin

@IgorDonin, würde die Verkettung von Variablenzuweisungen und Programmaufrufen eine Option für Sie sein? Zum Beispiel:$MY_ENV=value && java -jar ...
PAX

83

Sie können sogar einen Standardwert hinzufügen, wenn die Umgebungsvariable nicht angegeben ist:

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

5
Ich habe diese Syntax in einer App gefunden, die ich geerbt habe, und konnte die Spring-Dokumente, die dies zeigen, nicht finden. Es ist ziemlich offensichtlich, was passiert, aber die Dokumente dafür zu finden, wäre schön. Vielen Dank für das Teilen - ich bin jetzt mit meiner Schlussfolgerung zuversichtlicher.
Reverend

Ist die Verwendung von Standardwerten in der Konfiguration UB möglich oder wird dies ausdrücklich angegeben?
Anddero
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.