@Value注入List,Map及设置默认值

注入String
yml
populate:
  string: stringValue
1
2
注入
    @Value("${populate.string2:}")    // 默认值是空字符串“”
    private String stringV;
    
    @Value("${populate.string:null}")    // 默认值是null
    private String stringV2;
    
    @Value("${populate.string:defaultValue}")    // 默认值是“defaultValue”
    private String stringV3;
1
2
3
4
5
6
7
8
注入Array
yml
populate:
  array: array1,array2,array3
1
2
注入
    @Value("${populate.array:}") // 默认值是[]
    private String[] array;
    
    @Value("${populate.array:a1,a2,a3}") // 默认值是[a1,a2,a3]
    private String[] array1;
1
2
3
4
5
注入List
yml
populate:
  list: list1,list2,list3
1
2
注入
#{'${populate.list:}'.split(','): #{} 内是SpEL表达式,使用 split 函数指定了分隔符;
${populate.list}:不指定分隔符则会默认以, 作为分隔符。(可能较低版本的Spring不支持,未验证)
    @Value("${populate.list:}")  // 默认值是空List,{}
    private List<String> list0;

    @Value("#{'${populate.list:}'.split(',')}") // 默认值是包含一个空字符串的List {“”}
    private List<String> list1;

    @Value("${populate.list:l1,l2,l3}")  // 默认值是{l1,l2,l3}
    private List<String> list2;
    
    @Value("#{'${populate.list:l1,l2,l3}'.split(',')}") // 默认值是{l1,l2,l3}
    private List<String> list3;
    
    @Value("#{'${populate.list:,}'.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("#{${populate.map:{}}}")        // 默认值是null
   private Map<String,String> map;

   @Value("#{${populate.map:null}}}")  // 默认值是null
   private Map<String, String> map2;
   
   @Value("#{${populate.map:{k1:'v1',k2:'v2'}}}")  // 默认值是{"k1":"v1","k2":"v2"}
   private Map<String, String> map3;


   
   @Value("#{${populate.mapList:{}}}")        // 值为{"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变量方式及详细使用
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值