Application.yml prend-il en charge les variables d'environnement?


110

J'ai essayé d'utiliser des variables env dans ma configuration application.yml comme:

spring:
  main:
    show_banner: false

---

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

mais les variables env ne sont pas résolues. Dois-je fournir une notation différente?

Dans Rails, vous pouvez par exemple utiliser <% = ENV ['FOOVAR']%>

La seule alternative est d'exécuter l'application comme:

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

Réponses:


146

Essayez ${OPENSHIFT_DIY_PORT}(la notation habituelle de l'espace réservé Spring). Voir ici pour les documents.


C'était exactement ce dont j'avais besoin:app.name=MyApp app.description=${app.name} is a Spring Boot application
jurassix

2
Juste pour souligner - si vous utilisez kotlin, vous devez mettre votre référence entre guillemets et échapper $par exempleroot: "\${LOGGING_LEVEL_ROOT:info}"
Edward

Les gars, comment pouvons-nous passer le OPENSHIFT_DIY_PORT via unix cli lors du démarrage de l'application? Je sais que nous pouvons utiliser -D pour passer des paramètres de remplacement, mais cela fonctionne-t-il également pour les variables env? Ex .: nohup java -Xmx1024m -jar -Dspring.profiles.active = "peu importe". Existe-t-il un moyen de faire cela avec env vars?
Igor Donin

@IgorDonin, la concaténation des affectations de variables et du programme appellerait-elle une option pour vous? Par exemple:$MY_ENV=value && java -jar ...
PAX

84

Vous pouvez même ajouter une valeur par défaut, si la variable d'environnement n'est pas fournie:

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

5
J'ai trouvé cette syntaxe dans une application dont j'ai hérité et je n'ai pas pu trouver les documents Spring qui le montrent. Ce qui se passe est assez évident, mais être en mesure de trouver la documentation pour cela serait bien. Merci pour le partage - je suis plus confiant avec ma conclusion maintenant.
révérend

Utilise des valeurs par défaut dans la configuration UB ou est-ce explicitement indiqué possible?
anddero
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.