在我的 Spring Boot 应用程序的 application.properties
我有这个定义:
someProp=${SOME_ENV_VARIABLE}
但这是一个只在某些环境中设置的可选值,我是这样使用的
@Value("${someProp:#{null}}")
private String someProp;
令人惊讶的是,当 env. var 不存在
Could not resolve placeholder 'SOME_ENV_VARIABLE' in string value "${SOME_ENV_VARIABLE}"
如果在任何 PropertySource
中找不到,我期待 Spring 设置一个空白值。
如何使其成为可选?
原文由 Maxime Laval 发布,翻译遵循 CC BY-SA 4.0 许可协议
在
application.properties
中提供一个默认值当像
@Value("${someProp})
使用时,这将正确评估为null
。首先,如果在处理SOME_ENV_VARIABLE
时没有找到application.properties
,则其值变为字符串文字“#{null}”。然后,@Value
评估someProp
作为 SpEL 表达式,结果是null
。实际值可以通过查看Environment
bean 中的属性来验证。此解决方案使用
PlaceholderConfigurerSupport
类指定的默认值语法和 Spring SpEL 表达式模板。
来自关于 外部化配置 的 Spring Boot 文档