gpt4 book ai didi

spring - Spring 应用程序中的可选环境变量

转载 作者:IT老高 更新时间:2023-10-28 13:56:53 26 4
gpt4 key购买 nike

在我的 Spring Boot 应用程序的 application.properties 我有这个定义:

someProp=${SOME_ENV_VARIABLE}

但这是一个可选值,只在某些环境中设置,我是这样使用的

@Value("${someProp:#{null}}")
private String someProp;

令人惊讶的是,当 env.变量不存在
无法解析字符串值“${SOME_ENV_VARIABLE}”中的占位符“SOME_ENV_VARIABLE”
如果在任何 PropertySource 中找不到,我希望 Spring 设置一个空白值。

如何让它成为可选的?

最佳答案

application.properties

中提供一个默认值
someProp=${SOME_ENV_VARIABLE:#{null}}

当像 @Value("${someProp}) 一样使用时,这将正确地计算为 null。首先,如果 SOME_ENV_VARIABLE 不是在处理 application.properties 时发现,它的值变成字符串文字“#{null}”。然后,@ValuesomeProp 评估为一个 SpEL 表达式,结果为 null。实际值可以通过查看 Environment bean 中的属性来验证。

此解决方案使用 PlaceholderConfigurerSupport 指定的默认值语法。类

Default property values can be defined globally for each configurer instance via the properties property, or on a property-by-property basis using the default value separator which is ":" by default and customizable via setValueSeparator(String).

Spring SpEL expression templating .

来自 externalized configuration 上的 Spring Boot 文档

Finally, while you can write a SpEL expression in @Value, such expressions are not processed from Application property files.

关于spring - Spring 应用程序中的可选环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47580247/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com