O application.yml suporta variáveis ​​de ambiente?

109

Tentei usar variáveis ​​env em minha configuração de application.yml como:

spring:
  main:
    show_banner: false

---

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

mas as variáveis ​​env não são resolvidas. Devo fornecer uma notação diferente?

No Rails você pode, por exemplo, usar <% = ENV ['FOOVAR']%>

A única alternativa é executar o aplicativo como:

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

Respostas:

145

Experimente ${OPENSHIFT_DIY_PORT}(a notação usual de espaço reservado do Spring). Veja aqui a documentação.

Dave Syer
fonte
Isso era exatamente o que eu precisava:app.name=MyApp app.description=${app.name} is a Spring Boot application
jurassix
2
Apenas para apontar - se você estiver usando kotlin, você precisa colocar sua referência entre aspas e escapar do $exemploroot: "\${LOGGING_LEVEL_ROOT:info}"
Edward
Pessoal, como vamos passar o OPENSHIFT_DIY_PORT pelo unix cli ao iniciar o aplicativo? Eu sei que podemos usar -D para passar parâmetros de substituição, mas isso também funciona para variáveis ​​env? Ex .: nohup java -Xmx1024m -jar -Dspring.profiles.active = "qualquer". Existe uma maneira de fazer isso com env vars?
Igor Donin
@IgorDonin, a concatenação de atribuições de variáveis ​​e o programa chamariam uma opção para você? Por exemplo:$MY_ENV=value && java -jar ...
PAX
84

Você pode até adicionar um valor padrão, se a variável de ambiente não for fornecida:

logging:
  level:
    root: ${LOGGING_LEVEL_ROOT:info}
Alex Efimov
fonte
5
Eu encontrei essa sintaxe em um aplicativo que herdei e não consegui encontrar os documentos do Spring que mostram isso. É bastante óbvio o que está acontecendo, mas seria bom conseguir encontrar os documentos para isso. Obrigado por compartilhar - estou mais confiante com minha conclusão agora.
reverendo
Está usando valores padrão na configuração UB ou é explicitamente declarado possível?
anddero