时间:2021-05-19
今天给大家分享冷门但是有很实小知识,Spring 配置文件注入list、map、字节流。
list 注入
properties文件
user.id=3242,2323,1使用spring el表达式
@Value("#{'${user.id}'.split(',')}")private List list;yaml 文件
在yml配置文件配置数组方式
虽然网上都说,这样可以注入,我亲身实践过了,肯定是不能的。会抛出 Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'number.arrays' in value "${number.arrays}"异常。要想注入必须要使用
@ConfigurationProperties@ConfigurationProperties(prefix = "number")public class AgentController { private List arrays; public List getArrays() { return arrays; } public void setArrays(List arrays) { this.arrays = arrays; } @GetMapping("/s") public List lists(){ return arrays; }不是想这么麻烦,可以像properties文件写法,使用el表达式即可
注入文件流
从类路径加载application.yml文件将文件注入到org.springframework.core.io.Resource ,可以使用getInputStream()方法获取流。比起使用类加载器获取路径再去加载文件的方式,优雅、简单不少。
Map Key Value 注入
properties
resource.code.mapper={x86:"hostIp"} @Value("#{${resource.code.mapper}}")private Map<String, String> mapper;成功注入
yaml
在yaml文件中,使用@Value不能注入Map 实例的,要借助@ConfigurationProperties 才能实现。
配置文件
可以看出@ConfigurationProperties注入功能远比@Value强,不仅能注入List、Map这些,还能注入对象属性,静态内部类属性,这个在Spring Boot Redis模块 org.springframework.boot.autoconfigure.data.redis.RedisProperties体现出来。
区别
区别 @ConfigurationProperties @Value 类型 各种复制类型属性Map、内部类 只支持简单属性 spEl表达式 不支持 支持 JSR303数据校验 支持 不支持 功能 一个列属性批量注入 单属性注入
到此这篇关于Spring 配置文件字段注入到List、Map的文章就介绍到这了,更多相关Spring 文件字段注入到List、Map内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
注入集合(数组、List、Map、Set)类型属性(1)创建类,定义数组,list,map,set类型属性,并且生成对应的set方法。(2)在spring配置文
Spring中已经封装了邮件操作类,通过spring配置文件可以便捷地注入到controller、action等地方。下面是配置:mail配置EmailConf
默认spring装载的都是.properties格式的配置文件,但是有时我们需要定义list或者map类型的配置,那么yaml就具有优势。以下演示利用apoll
Spring的配置文件概述简介Spring的配置文件是用于指导Spring工厂进行Bean生成、依赖关系注入及Bean示例分发的”图纸”,他是一个或多个标砖的X
本实例中还涉及到Spring中采用多个配置文件,也涉及到对日期格式的注入-------更加灵活Date属性类:DatePropertyInjection.jav