如何使用大写环境变量设置Spring camel case属性?

时间:2016-02-20 01:10:39

标签: spring spring-boot

我有一些代码可以在我的Spring应用程序中加载一个值:

@Component
public class MyElasticRestService {
    @Value("${elasticApi.baseURL}")
    private String elasticApiBaseUrl;

根据the Spring docs,我应该可以使用来自大写环境变量(例如ELASTIC_API_BASE_URLELASTICAPI_BASEURL)的宽松绑定。但我很困惑哪个是正确的。两者似乎都不起作用所以我想知道如何调试实际拾取的内容。

我已经加载了Spring Boot Actuator来查看configprops端点。但它在elasticApi前缀上没有任何内容。

正确的环境变量应该是什么?如何才能看到应用程序如何翻译和拾取它?

2 个答案:

答案 0 :(得分:6)

@Value注释不支持宽松绑定。因此,您可以使用带@ConfigurationProperties注释的类,或者使用RelaxedPropertyResolver从环境中获取值。

答案 1 :(得分:2)

根据https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config-vs-value,现在很可能只需使用@Value ,只要您使用kebab-case (所有小写的破折号)作为名称,例如@Value(“ config.refresh-rate”)