官方文档已经介绍了@Value可以用在哪些地方:
-
在字段上
@Value("#{ systemProperties['user.region'] }") private String defaultLocale; -
在setter方法上(与上面那种设置方式结果相同)
@Value("#{ systemProperties['user.region'] }") public void setDefaultLocale(String defaultLocale) { this.defaultLocale = defaultLocale; } -
在方法参数上
@Autowired public void configure(MovieFinder movieFinder, @Value("#{ systemProperties['user.region'] }") String defaultLocale) { this.movieFinder = movieFinder; this.defaultLocale = defaultLocale; } -
在构造函数参数上
@Autowired public MovieRecommender(CustomerPreferenceDao customerPreferenceDao, @Value("#{systemProperties['user.country']}") String defaultLocale) { this.customerPreferenceDao = customerPreferenceDao; this.defaultLocale = defaultLocale; }
用法
-
常规用法
@Value("${name}") private String name; -
带有默认值。若在配置文件中没有设置值时,则指定这个为默认值
@Value("${name:test}") private String name; -
指定为基础类型
@Value("${age:10}") private int age; @Value("${isValid:true}") private boolean isValid; -
指定为数组
@Value("${keys:name,age,sex}") private String[] keys; -
SpEL
@Value("#{systemProperties['priority']}") private String spelValue;