春配置文件字段如何注入到列表,地图吗?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
<强>列表注入强>
<强>属性文件强>
用户。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数据校验支持不支持功能一个列属性批量注入单属性注入
看完上述内容,你们掌握春天配置文件字段如何注入到列表,地图的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!