注入String
yml
populate:
string: stringValue
1
2
注入
@Value("${populate.string2:}") // 默认值是空字符串“”
private String stringV;
@Value("${:null}") // 默认值是null
private String stringV2;
@Value("${:defaultValue}") // 默认值是“defaultValue”
private String stringV3;
1
2
3
4
5
6
7
8
注入Array
yml
populate:
array: array1,array2,array3
1
2
注入
@Value("${:}") // 默认值是[]
private String[] array;
@Value("${:a1,a2,a3}") // 默认值是[a1,a2,a3]
private String[] array1;
1
2
3
4
5
注入List
yml
populate:
list: list1,list2,list3
1
2
注入
#{'${:}'.split(','): #{} 内是SpEL表达式,使用 split 函数指定了分隔符;
${}:不指定分隔符则会默认以, 作为分隔符。(可能较低版本的Spring不支持,未验证)
@Value("${:}") // 默认值是空List,{}
private List<String> list0;
@Value("#{'${:}'.split(',')}") // 默认值是包含一个空字符串的List {“”}
private List<String> list1;
@Value("${:l1,l2,l3}") // 默认值是{l1,l2,l3}
private List<String> list2;
@Value("#{'${:l1,l2,l3}'.split(',')}") // 默认值是{l1,l2,l3}
private List<String> list3;
@Value("#{'${:,}'.split(',')}") // 默认值是空List,{}
private List<String> list4;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
注入Map
yml
key可以但不必被单引号包围
value必须被单引号包围
populate:
map: "{
'key1': 'value1',
'key2': 'value2',
'key3': 'value3'
}"
mapList: "{
key1: 'v11,v12',
key2: 'v21,v22',
key3: 'v31,v32'
}"
1
2
3
4
5
6
7
8
9
10
11
12
注入
@Value("#{${:{}}}") // 默认值是null
private Map<String,String> map;
@Value("#{${:null}}}") // 默认值是null
private Map<String, String> map2;
@Value("#{${:{k1:'v1',k2:'v2'}}}") // 默认值是{"k1":"v1","k2":"v2"}
private Map<String, String> map3;
@Value("#{${:{}}}") // 值为{"key1":["v11","v12"],"key2":["v21","v22"],"key3":["v31","v32"]}
private Map<String,List<String>> mapList;
1
2
3
4
5
6
7
8
9
10
11
12
13
${} 与 #{}
#{…} 主要用于加载外部属性文件中的值
${…} 用于执行SpEl表达式,并将内容赋值给属性
#{…} 和 $ {…} 可以混合使用,但是必须#{}外面,${}在里面
参考
@Value注入map、List、Bean、static变量方式及详细使用