我有一些代码可以在Spring应用程序中加载这样的值:
@Component
public class MyElasticRestService {
@Value("${elasticApi.baseURL}")
private String elasticApiBaseUrl;
根据Spring文档,我应该能够使用来自大写环境变量的宽松绑定,例如ELASTIC_API_BASE_URL
或ELASTICAPI_BASEURL
。但是我不知道哪一个是正确的。这两个都不工作,所以我想知道如何调试实际上拾取的内容。
我已经加载了Sping Boot Actuator来查看configprops
端点。但是它没有任何关于elasticApi
前缀的内容。
正确的环境变量应该是什么?我如何才能看到它是如何被应用程序转换和获取的?
3条答案
按热度按时间eni9jsuy1#
@Value
注解不支援宽松的系结。因此您可以使用@ConfigurationProperties
注解的类别,或使用RelaxedPropertyResolver
从环境中取得值。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”)qhhrdooz3#
您可以将其放入
application.yaml
文件中,而不是尝试将其设置为UPPER_SNAKE_CASE,方法如下:或者这种方式并不重要