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
Marcel Overdijk
quelle

Antworten:

145

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

Dave Syer
quelle
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}
Alex Efimov
quelle
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