【发布时间】:2020-10-22 01:27:47
【问题描述】:
我正在为应用程序使用 Spring 和 Java,并且我想使用 @Value 注释来注入属性的值,我的用例是我想首先检查该属性是否作为系统属性存在(所以它优先),否则默认为配置属性(存在于属性文件中)
在注释代码中,您可以看到我想要实现的目标,是否可以默认为其他简单字符串?如果不是,我该如何实现?
//@Value("#{configProperties['local.datasource.username']}") THIS IS THE ORIGINAL CODE
//@Value("#{systemProperties['some.key'] ?: 'my default system property value'}") THIS IS HOW SPRING PROPOSE TO SET A DEFAULT VALUE
//@Value("#{systemProperties['some.key'] ?: #{configProperties['local.datasource.username']}}") THIS IS WHAT I WANT TO ACHIEVE, HOWEVER NOT COMPILING,
private String username;
【问题讨论】:
-
SpEL 不使用 elvis 运算符,而是支持在您的第三个示例中使用
:IIRC 的默认值,第一个#应该是$并且恕我直言,表达式不必是集体的类型:${some.key:local.datasource.username} -
成功了!谢谢,您是否应该将评论添加为答案以将其设置为已解决?
-
很高兴听到,我写了一个答案并添加了一些额外的信息。
标签: java spring spring-boot spring-el