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

偏执的太偏执、 2022-11-07 11:34 260阅读 0赞

注入String

yml
  1. populate:
  2. string: stringValue
注入
  1. @Value("${populate.string2:}") // 默认值是空字符串“”
  2. private String stringV;
  3. @Value("${populate.string:null}") // 默认值是null
  4. private String stringV2;
  5. @Value("${populate.string:defaultValue}") // 默认值是“defaultValue”
  6. private String stringV3;

注入Array

yml
  1. populate:
  2. array: array1,array2,array3
注入
  1. @Value("${populate.array:}") // 默认值是[]
  2. private String[] array;
  3. @Value("${populate.array:a1,a2,a3}") // 默认值是[a1,a2,a3]
  4. private String[] array1;

注入List

yml
  1. populate:
  2. list: list1,list2,list3
注入
  • #{'${populate.list:}'.split(','): #{} 内是SpEL表达式,使用 split 函数指定了分隔符;
  • ${populate.list}:不指定分隔符则会默认以, 作为分隔符。(可能较低版本的Spring不支持,未验证)

    @Value(“${populate.list:}”) // 默认值是空List,{}

    1. private List<String> list0;
    2. @Value("#{'${populate.list:}'.split(',')}") // 默认值是包含一个空字符串的List {“”}
    3. private List<String> list1;
    4. @Value("${populate.list:l1,l2,l3}") // 默认值是{l1,l2,l3}
    5. private List<String> list2;
    6. @Value("#{'${populate.list:l1,l2,l3}'.split(',')}") // 默认值是{l1,l2,l3}
    7. private List<String> list3;
    8. @Value("#{'${populate.list:,}'.split(',')}") // 默认值是空List,{}
    9. private List<String> list4;

注入Map

yml
  • key可以但不必被单引号包围
  • value必须被单引号包围

    populate:
    map: “{

    1. 'key1': 'value1',
    2. 'key2': 'value2',
    3. 'key3': 'value3'
    4. }"

    mapList: “{

    1. key1: 'v11,v12',
    2. key2: 'v21,v22',
    3. key3: 'v31,v32'
    4. }"
注入
  1. @Value("#{${populate.map:{}}}") // 默认值是null
  2. private Map<String,String> map;
  3. @Value("#{${populate.map:null}}}") // 默认值是null
  4. private Map<String, String> map2;
  5. @Value("#{${populate.map:{k1:'v1',k2:'v2'}}}") // 默认值是{"k1":"v1","k2":"v2"}
  6. private Map<String, String> map3;
  7. @Value("#{${populate.mapList:{}}}") // 值为{"key1":["v11","v12"],"key2":["v21","v22"],"key3":["v31","v32"]}
  8. private Map<String,List<String>> mapList;

${} 与 #{}

  • #{…} 主要用于加载外部属性文件中的值
  • ${…} 用于执行SpEl表达式,并将内容赋值给属性
  • #{…} 和 $ {…} 可以混合使用,但是必须#{}外面,${}在里面

参考

@Value注入map、List、Bean、static变量方式及详细使用

发表评论

表情:
评论列表 (有 0 条评论,260人围观)

还没有评论,来说两句吧...

相关阅读