@Value注解谁都用过,但还是有点细节的。
注入配置文件里面的属性
@value("${name}")
private String name;
使用冒号可以设置默认值,当属性不存在时使用默认值:
@value("${name:zhangsan}")
private String name;
直接注入字符串
@value("zhangsan")
private String name;
注入数组
配置文件:
user.types=1,3,5
java代码为:
@Value("${user.types}")
private String[] types;
数组中可以设置默认值吗?当然可以。
注:冒号后面直接写1,2,3即可,不用加中括号。
@Value("${user.types:1,4,5,7,9,13}")
private String[] type;
使用SpEl表达式注入
SpEl表达式支持加减乘除,这里只举一例:
@Value("#{5*2}")
private Double number;
注入操作系统属性
@Value("#{systemProperties['os.name']}")
private String osName; // 例如: Windows 7
注入容器中对象的属性
@Component
@Data
public class Student {
@Value("yangyanzhao")
private String name;
}
// =========== 另一个类中这么写
@Value("#{student.name}")
private String studentName;
基于对象注入
注入文件
@Value("classpath:aaa.txt")
private Resource file;
注入网址内容
@Value("http://www.baidu.com")
private Resource baidu;