我有一些代码可以在我的Spring应用程序中加载一个值:
@Component
public class MyElasticRestService {
@Value("${elasticApi.baseURL}")
private String elasticApiBaseUrl;
根据the Spring docs,我应该可以使用来自大写环境变量(例如ELASTIC_API_BASE_URL
或ELASTICAPI_BASEURL
)的宽松绑定。但我很困惑哪个是正确的。两者似乎都不起作用所以我想知道如何调试实际拾取的内容。
我已经加载了Spring Boot Actuator来查看configprops
端点。但它在elasticApi
前缀上没有任何内容。
正确的环境变量应该是什么?如何才能看到应用程序如何翻译和拾取它?
答案 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”)