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

yvgpqqbh  于 2022-11-28  发布在  Spring
关注(0)|答案(3)|浏览(125)

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

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

根据Spring文档,我应该能够使用来自大写环境变量的宽松绑定,例如ELASTIC_API_BASE_URLELASTICAPI_BASEURL。但是我不知道哪一个是正确的。这两个都不工作,所以我想知道如何调试实际上拾取的内容。
我已经加载了Sping Boot Actuator来查看configprops端点。但是它没有任何关于elasticApi前缀的内容。
正确的环境变量应该是什么?我如何才能看到它是如何被应用程序转换和获取的?

eni9jsuy

eni9jsuy1#

@Value注解不支援宽松的系结。因此您可以使用@ConfigurationProperties注解的类别,或使用RelaxedPropertyResolver从环境中取得值。

2ic8powd

2ic8powd2#

根据https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config-vs-value,现在只要您在名称中使用kebab-case**(所有小写字母都带破折号),就可以简单地使用@Value**,例如@Value(“config.refresh-rate”)

qhhrdooz

qhhrdooz3#

您可以将其放入application.yaml文件中,而不是尝试将其设置为UPPER_SNAKE_CASE,方法如下:

elasticApi.baseURL: ${ELASTIC_API_BASE_URL:defaultvalue}

或者这种方式并不重要

elasticApi:
   baseURL: ${ELASTIC_API_BASE_URL:defaultvalue}

相关问题