1.是什么
1.1)概念
@Value注解是 Spring的注解,可以用来将外部的值动态注入到 Bean 中,在 @Value 注解中,可以使用 ${} 或 #{}。${} 与 #{} 的区别如下:
(1)@Value("${}"):可以获取对应属性文件中定义的属性值。
(2)@Value("#{}"):表示 SpEl 表达式通常用来获取 bean 的属性,或者调用 bean 的某个方法。
1.2)@Value注解用法小结:
#{…} 用于执行SpEl表达式,并将内容赋值给属性。
${…} 主要用于加载外部属性文件中的值。
#{…} 和${…} 可以混合使用,但是必须#{}外面,${}在里面。
2.为什么
1) 需要给定默认值,才不会报错
比如
里边的 name.list后有一个 冒号,就算是有 默认值空字符串了
@Value("#{'${name.list:}'.split(',')}")
private List<String> nameList;
如果是下面这样的,没有 name.list这个属性时,就会启动Java时报错
@Value("#{'${name.list}'.split(',')}")
private List<String> nameList;
3.怎么处理
怎么处理,上边说了,尽量还是给默认值,避免启动报错
4.其他
4.1) 参考资料:
@Value 注解详解 - 人人编程网本文将介绍 Spring 中 @Value 注解的详细用法,以及 @Value 为静态属性设置值。https://www.hxstrive.com/article/854.htmspring的@Value注解使用_woheniccc的博客-CSDN博客_@value注解昨天看到了springMVC的controller中的属性使用了@value注解,并且本人之前用的${}形式,看到别人用的#{}形式,特此记录下。1.@Value注解作用 该注解的作用是将我们配置文件的属性读出来,有@Value(“${}”)和@Value(“#{}”)两种方式,区别之后介绍,先不多说上图感受。2.@Value注解作用的两种方式第一种方式@Value(...
https://blog.csdn.net/woheniccc/article/details/79804600