关于@Value注入List,Map及设置默认值问题

 更新时间:2024年05月15日 15:22:12   作者:-luking-  
这篇文章主要介绍了@Value注入List,Map及设置默认值问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

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

注入String

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

注入Array

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

注入List

  • yml
populate:
  list: list1,list2,list3
  • 注入

#{'${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;

注入Map

yml

  • key可以但不必被单引号包围
  • value必须被单引号包围
populate:
  map: "{
         'key1': 'value1',
         'key2': 'value2',
         'key3': 'value3'
         }"
         
  mapList: "{
          key1: 'v11,v12',
          key2: 'v21,v22',
          key3: 'v31,v32'
         }"
  • 注入
   @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; 

${} 与 #{} #{…}

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

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java线程池高效并发编程实战技巧

    Java线程池高效并发编程实战技巧

    线程池是一种线程管理机制,它预先创建一定数量的线程并放入池中,当需要执行任务时,从池中获取空闲线程来执行任务,任务完成后线程不销毁而是返回池中等待下一次任务,这篇文章给大家介绍Java线程池高效并发编程实战技巧,感兴趣的朋友跟随小编一起看看吧
    2026-02-02
  • Java中负数的绝对值竟然不一定是正数

    Java中负数的绝对值竟然不一定是正数

    这篇文章主要介绍了Java中负数的绝对值竟然不一定是正数,文中给大家提到Java 中怎么把负数转换为正数,需要的朋友可以参考下
    2021-07-07
  • Java生成Echarts表图的2种实现方案

    Java生成Echarts表图的2种实现方案

    这篇文章主要给大家介绍了关于Java生成Echarts表图的2种实现方案,ECharts是一款功能非常强大的JavaScript图表库,文中通过代码实例介绍的非常详细,需要的朋友可以参考下
    2023-09-09
  • Java实现Word/Excel/TXT转PDF的方法

    Java实现Word/Excel/TXT转PDF的方法

    这篇文章主要介绍了Java实现Word/Excel/TXT转PDF的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01
  • SpringCloud GateWay网关示例代码详解

    SpringCloud GateWay网关示例代码详解

    这篇文章主要介绍了SpringCloud GateWay网关,Spring cloud Gateway的功能很多很强大,文中提到了Spring Cloud Gateway中几个重要的概念,结合实例代码给大家介绍的非常详细,需要的朋友参考下吧
    2022-04-04
  • jpa使用manyToOne(opntional=true)踩过的坑及解决

    jpa使用manyToOne(opntional=true)踩过的坑及解决

    这篇文章主要介绍了jpa使用manyToOne(opntional=true)踩过的坑及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • springBoot如何动态加载资源文件

    springBoot如何动态加载资源文件

    这篇文章主要介绍了springBoot如何动态加载资源文件,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • spring-boot 禁用swagger的方法

    spring-boot 禁用swagger的方法

    本篇文章主要介绍了spring-boot 禁用swagger的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • 使用apache 的FileUtils处理文件的复制等操作方式

    使用apache 的FileUtils处理文件的复制等操作方式

    这篇文章主要介绍了使用apache 的FileUtils处理文件的复制等操作方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • 浅谈Java中是否直接可以使用enum进行传输

    浅谈Java中是否直接可以使用enum进行传输

    这篇文章主要介绍了浅谈Java中是否直接可以使用enum进行传输,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05

最新评论