春天配置文件字段如何注入到列表,地图

  

春配置文件字段如何注入到列表,地图吗?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

<强>列表注入

<强>属性文件

用户。id=3242、2323、1

使用弹簧el表达式

 @ value (“# {& # 39; $ {user.id} & # 39; .split (& # 39; & # 39;)}“)
  私人列表列表;

<强> yaml文件

在yml配置文件配置数组方式

号码:   数组:   -> @ value (“$ {number.arrays}“)   私人列表列表

虽然网上都说,这样可以注入,我亲身实践过了,肯定是不能的。会抛出造成的:. lang。IllegalArgumentException:不能解决占位符& # 39;number.arrays& # 39;在“$ {number.arrays}“异常。要想注入必须要使用

@ConfigurationProperties   @ConfigurationProperties(前缀=皀umber")   公开课AgentController {      私人数组列表;   公共列表getArrays () {   返回数组;   }      公共空间setArrays(列表数组){   这。数组=数组;   }   @GetMapping (“/s")   公共列表列表(){   返回数组;   }

不是想这么麻烦,可以像属性文件写法,使用el表达式即可

号码:   数组:> @ value (“# {& # 39; $ {number.arrays} & # 39; .split (& # 39; & # 39;)}“)   私人数组列表;


 @ value(“类路径:application.yml")
  私人资源资源;//占位符
  @ value (“$ {file.name}“)
  私人资源resource2;
  
  @GetMapping (“/s")
  公共字符串列表()抛出IOException {
  返回IOUtils.toString (resource.getInputStream (),“UTF-8");
  }

从类路径加载application.yml文件将文件注入到org.springframework.core.io。资源,可以使用getInputStream()方法获取流。比起使用类加载器获取路径再去加载文件的方式,优雅,简单不少。

<强>

<强>属性

resource.code.mapper={x86:“hostIp"}
 @ value (“# {$ {resource.code.mapper}}“)
  私人Map<字符串,String>映射器;

成功注入

<强> yaml

在yaml文件中,使用@ value不能注入地图实例的,要借助@ConfigurationProperties才能实现。

 @ConfigurationProperties(前缀=癰log")
  公开课AgentController {
  
  私人网站地图;
  
  公共地图getWebsite () {
  返回网站;
  }
  
  公共空间setWebsite(地图网站){
  这。网站=;
  }
  
  @GetMapping (“/s")
  公共字符串列表()抛出IOException {
  返回JsonUtil.toJsonString(网站);
  }

配置文件

博客:   网站:   juejin: https://juejin.im   剑术:https://jianshu.com   sifou: https://segmentfault.com/

可以看出@ConfigurationProperties注入功能远比@ value强,不仅能注入列表,地图这些,还能注入对象属性,静态内部类属性,这个春天在引导复述,模块,org.springframework.boot.autoconfigure.data.redis。RedisProperties体现出来。

区别@ConfigurationProperties@Value类型各种复制类型属性地图,内部类只支持简单属性?表达式不支持支持JSR303数据校验支持不支持功能一个列属性批量注入单属性注入

看完上述内容,你们掌握春天配置文件字段如何注入到列表,地图的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

春天配置文件字段如何注入到列表,地图