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

Jawaban:


146

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


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}

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.