在项目中发现@value的用法有很多种
@value注入的作用:
通过@value将外部的值动态注入到Bean中。
1、可以注入普通字符串
2、注入操作系统属性
3、注入表达式结果
4、注入其他Bean属性
5、注入文件资源
6、注入URL资源
@value("nomalChacter")
private String char;//注入普通字符
@value("#{sytemProperties['os.name']}")
private String systemPropertiesName;//注入操作系统
@value("#{T(java.lang.Math).random()*100.0}")
private double randomNumber;//注入表达式结果
@Value("#{bean.name}")
private String fromAnotherBean; // 注入其他Bean属性:注入beanInject对象的属性name
@Value("classpath:com/1.txt")
private Resource resourceFile; // 注入文件资源
@Value("http://www.gogle.com")
private Resource testUrl; // 注入URL资源
通过@Value("${app.name}")语法将属性文件的值注入bean属性值。
@Value("${person.name}")
private String name;
@Value("${person.name.firstName}")
private String firstName;//注入name的firstName
上面的用法中有#{}和¥{},二者有什么区别呢
#{..}主要用于执行SpEl表达式,并将内容赋值给属性
${..}主要用于加载外部属性文件中的值
#{..}和${..}可以混合使用, 但是必须#{}外面,${}在里面