在java.util.Set变量的Spring @Value中将默认值设置为null
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在java.util.Set变量的Spring @Value中将默认值设置为null,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1042字,纯文字阅读大概需要2分钟。
内容图文
![在java.util.Set变量的Spring @Value中将默认值设置为null](/upload/InfoBanner/zyjiaocheng/820/05b4ffdc3a00493aa6f56e35376d2ecf.jpg)
使用SpEL在Spring @Value注释中遇到一个有趣的问题.设置null的默认值适用于String变量.但是,对于Set变量,它没有.
所以,这工作(varStr为null):
@Value("${var.string:#{NULL}}")
private String varStr;
虽然这不是(varSet现在包含一个带有“#{NULL}”的元素):
@Value("#{'${var.set:#{NULL}}'.split(',')}")
private Set<String> varSet;
问题是如何使用Set变量使其工作,因此默认情况下它将设置为null.
对你的帮助表示感谢.
解决方法:
您可以尝试将@Value注入数组而不是Set.然后在@PostConstruct init块中将其转换为所需的Set实例.当没有这样的属性时,Spring似乎注入了一个空数组(非空)(注意@Value字符串中的空默认值).如果确实存在,则默认情况下会在逗号上拆分.
像这样:
@Value("${some.prop:}")
private String[] propsArr;
private Set<String> props;
@PostConstruct
private void init() throws Exception {
props = (propsArr.length == 0) ? null : Sets.newHashSet(propsArr);
}
我只想提出另一个建议.我建议您根本不使用null,而是使用空Set. Null往往容易出错,并且通常不会传达任何比空集合更多的信息.您的情况可能会有所不同 – 这只是一般性建议.
BTW – Sets.newHashSet(…)来自Google’s Guava library.强烈推荐.
内容总结
以上是互联网集市为您收集整理的在java.util.Set变量的Spring @Value中将默认值设置为null全部内容,希望文章能够帮你解决在java.util.Set变量的Spring @Value中将默认值设置为null所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。