在我的Spring Boot应用程序中expose
我有这个定义:
application.properties
但这是一个仅在某些环境中设置的可选值,我像这样使用它
someProp=${SOME_ENV_VARIABLE}
令人惊讶的是,我在env时遇到此错误。 var不存在
@Value("${someProp:#{null}}")
private String someProp;
如果在任何Could not resolve placeholder 'SOME_ENV_VARIABLE' in string value "${SOME_ENV_VARIABLE}"
中找不到,我希望Spring只设置一个空白值。
如何使其成为可选项?
答案 0 :(得分:12)
在application.properties
someProp=${SOME_ENV_VARIABLE:#{null}}
与@Value("${someProp})
一样使用时,这将正确评估为null
。首先,如果在处理SOME_ENV_VARIABLE
时未找到application.properties
,则其值将变为字符串文字“#{null}”。然后,@Value
将someProp
评估为SpEL表达式,从而生成null
。可以通过查看Environment
bean中的属性来验证实际值。
此解决方案使用PlaceholderConfigurerSupport
类
可以为每个配置器全局定义默认属性值 实例通过属性属性,或逐个属性 使用默认值分隔符的基础,默认值为“:” 可通过setValueSeparator(String)自定义。
和Spring SpEL expression templating。
上的Spring Boot文档最后,您可以在@Value中编写SpEL表达式,例如 表达式不是从Application属性文件处理的。