Apakah application.yml mendukung variabel lingkungan?

110

Saya mencoba menggunakan variabel env di konfigurasi application.yml saya seperti:

spring:
  main:
    show_banner: false

---

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

tetapi variabel env tidak diselesaikan. Apakah saya harus memberikan notasi yang berbeda?

Di Rails Anda dapat, misalnya, menggunakan <% = ENV ['FOOVAR']%>

Satu-satunya alternatif adalah menjalankan aplikasi seperti:

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

Jawaban:

146

Coba ${OPENSHIFT_DIY_PORT}(notasi placeholder Spring biasa). Lihat di sini untuk dokumen.

Dave Syer
sumber
Inilah yang saya butuhkan:app.name=MyApp app.description=${app.name} is a Spring Boot application
jurassix
2
Hanya untuk menunjukkan - jika Anda menggunakan kotlin, Anda perlu meletakkan referensi Anda dalam tanda kutip & menghindari $misroot: "\${LOGGING_LEVEL_ROOT:info}"
Edward
Teman-teman, bagaimana kita bisa melewati OPENSHIFT_DIY_PORT melalui unix cli saat memulai aplikasi? Saya tahu kita bisa menggunakan -D untuk melewatkan parameter pengganti, tetapi apakah itu juga berfungsi untuk variabel env? Mis .: nohup java -Xmx1024m -jar -Dspring.profiles.active = "terserah". Apakah ada cara untuk melakukannya dengan env vars?
Igor Donin
@IgorDonin, akankah rangkaian tugas variabel dan program memanggil opsi untuk Anda? E. g .:$MY_ENV=value && java -jar ...
PAX
84

Anda bahkan dapat menambahkan nilai default, jika variabel lingkungan tidak disediakan:

logging:
  level:
    root: ${LOGGING_LEVEL_ROOT:info}
Alex Efimov
sumber
5
Saya menemukan sintaks ini di aplikasi yang saya warisi dan tidak dapat menemukan dokumen Spring yang menunjukkannya. Cukup jelas apa yang terjadi, tetapi untuk dapat menemukan dokumentasinya akan menyenangkan. Terima kasih telah berbagi - Saya lebih percaya diri dengan kesimpulan saya sekarang.
Pendeta
Apakah menggunakan nilai default dalam konfigurasi UB atau secara eksplisit dinyatakan mungkin?
anddero