2016-02-20 91 views
2

我有一些代码,加载在我的Spring应用程序的值,例如:如何用大写的环境变量设置Spring驼峰案例属性?

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

the Spring docs,我应该能够用一种轻松绑定来自一个大写的环境变量,例如ELASTIC_API_BASE_URLELASTICAPI_BASEURL。但我很困惑,这是正确的。两者似乎都不起作用,所以我想知道如何调试实际拾取的内容。

我已经加载弹簧引导器来查看configprops端点。但它在elasticApi前缀上没有任何内容。

应该怎样正确的环境变量,我怎么能看到它如何被翻译并应用拾起?

+0

我怀疑在@Value大写的URL可能会产生混淆了。尝试将$ {elasticApi.baseUrl}与ELASTIC_API_BASE_URL结合使用。 – chrsalln

回答

3

@Value注释不支持轻松绑定。因此,您可以使用与@ConfigurationProperties注释的类或您使用RelaxedPropertyResolver摆脱环境的价值。

+1

当我看到你的答案时,我简直不敢相信。不过,你是对的。该文档实际上说明它只能与@ConfigurationProperties豆的作品,如果你仔细阅读:https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot -features-external-config-relaxed-binding – chrsalln

+0

谢谢。我不是Java程序员。但是这个答案(以及对文档中特定部分的评论)是有用的,现在是有道理的。我想接下来看看如何转换为'@ ConfigurationProperties'风格,这样我可以更容易地在属性包装中使用属性作为环境变量。 –