Application.yml có hỗ trợ các biến môi trường không?


109

Tôi đã thử sử dụng các biến env trong cấu hình application.yml của mình như:

spring:
  main:
    show_banner: false

---

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

nhưng các biến env không được giải quyết. Tôi có phải cung cấp một ký hiệu khác không?

Trong Rails, bạn có thể sử dụng <% = ENV ['FOOVAR']%>

Cách thay thế duy nhất là chạy ứng dụng như:

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

Câu trả lời:


145

Thử ${OPENSHIFT_DIY_PORT}(ký hiệu trình giữ chỗ Spring thông thường). Xem tài liệu ở đây .


Đây chính xác là những gì tôi cần:app.name=MyApp app.description=${app.name} is a Spring Boot application
jurassix

2
Chỉ để chỉ ra - nếu bạn đang sử dụng kotlin, bạn cần đặt tham chiếu của mình trong dấu ngoặc kép và thoát khỏi $ví dụroot: "\${LOGGING_LEVEL_ROOT:info}"
Edward

Các bạn, làm cách nào để chúng ta chuyển OPENSHIFT_DIY_PORT qua unix cli khi khởi động ứng dụng? Tôi biết chúng ta có thể sử dụng -D để truyền các tham số ghi đè, nhưng điều đó có hoạt động với các biến env không? Ví dụ: nohup java -Xmx1024m -jar -Dspring.profiles.active = "bất cứ điều gì". Có cách nào để làm điều đó với env vars không?
Igor Donin

@IgorDonin, việc ghép các phép gán biến và chương trình có gọi là tùy chọn cho bạn không? E. g:$MY_ENV=value && java -jar ...
PAX

84

Bạn thậm chí có thể thêm giá trị mặc định, nếu biến môi trường không được cung cấp:

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

5
Tôi đã tìm thấy cú pháp này trong một ứng dụng mà tôi kế thừa và không thể tìm thấy tài liệu Spring hiển thị điều này. Nó khá rõ ràng là những gì đang xảy ra, nhưng để có thể tìm thấy tài liệu cho nó sẽ là tốt. Cảm ơn bạn đã chia sẻ - bây giờ tôi tự tin hơn với kết luận của mình.
rerend

Việc sử dụng các giá trị mặc định trong cấu hình UB hay được nêu rõ ràng là có thể?
anddero
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.