1 @Value注解作用
读取配置文件中的属性。
@Value的值有以下两类:
${ property : default_value }
#{ obj.property? :default_value }
$注入的是外部配置文件对应的property,使用“:”对未配置或值为空的属性设置默认值。
#注入的是SpEL表达式对应的内容,使用“?:”对未配置或值为空的表达式设置默认值。
default_value为默认值。
2 举例
apollo.meta = xxxx 字符串 apollo.namespace = xxx,xxx,xxx 数组 channelIdToName = {1: "全画作", 2: "全古籍", 3: "全音乐"} map
基于配置文件注入
/** * 注入简单字符串 */ @Value("${apollo.meta:xxx}") 读取字符串配置项,配置为空时取默认值xxx。 String meta; /** * 注入数组,默认','分隔 */ @Value("${apollo.namespace}") 读取逗号分隔的字符串 String[] array; /** * 注入列表,默认','分隔 */ @Value("${apollo.namespace}") 读取逗号分隔的字符串 List<String> list; /** * 注入map,#和$并用,#要在$前面 */ @Value("#{${channelIdToName}}") 读取配置文件中的map,直接赋值给已定义好的map类型。 Map<Integer,String> map;
基于非配置文件注入
/** * 注入普通字符串,相当于直接给属性默认值 */ @Value("项目名") private String projectName; /** * 注入操作系统属性 */ @Value("#{systemProperties['os.name']}") private String systemPropertiesName; /** * 注入其他Bean属性:注入article对象的属性title */ @Value("#{article.title}") private String articleTitle; /** * 注入列表,设置根据"|"来分隔 */ @Value("#{'${words}'.split('\|')}") private List<String> numList; /** * 注入文件资源 */ @Value("classpath:config.xml") private Resource config;