千家信息网

springboot从application.properties中注入list和map方式是什么

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,本篇内容主要讲解"springboot从application.properties中注入list和map方式是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大
千家信息网最后更新 2026年11月04日springboot从application.properties中注入list和map方式是什么

本篇内容主要讲解"springboot从application.properties中注入list和map方式是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"springboot从application.properties中注入list和map方式是什么"吧!

需求

在配置类中,从application.properties中读取一个复杂list。如List或者初始化一个map

直接上代码

配置类

@Configuration@Component@ConfigurationProperties(prefix = "datahub")public class Config {    private List datahubParams;     private Map map;     public void setMap(Map map) {        this.map = map;    }     public Map getMap() {        return map;    }     public List getDatahubParams() {        return datahubParams;    }     public void setDatahubParams(List datahubParams) {        this.datahubParams = datahubParams;    }}

DatahubParam.java:

public class DatahubParam {    private String project;    private String topic;    private String subId;    private String shardId;     @Override    public String toString() {        return "{project: " + project + ", topic: " + topic + ", subId: " + subId + ", shardId: " + shardId + "}";    }     public String getProject() {        return project;    }     public void setProject(String project) {        this.project = project;    }     public String getTopic() {        return topic;    }     public void setTopic(String topic) {        this.topic = topic;    }     public String getSubId() {        return subId;    }     public void setSubId(String subId) {        this.subId = subId;    }     public String getShardId() {        return shardId;    }     public void setShardId(String shardId) {        this.shardId = shardId;    } }

application.properties:

datahub.datahub-params[0].project = project-0datahub.datahub-params[0].topic = topic-0datahub.datahub-params[0].sub-id = subId-0datahub.datahub-params[0].shard-id = shardId-0 datahub.datahub-params[1].project = project-1datahub.datahub-params[1].topic = topic-1datahub.datahub-params[1].sub-id = subId-1datahub.datahub-params[1].shard-id = shardId-1 datahub.map.username=uweidatahub.map.age=22datahub.map.salary=15000

测试类

@RunWith(SpringRunner.class)@SpringBootTestpublic class HelloTest {    @Autowired    Config config;     @Test    public void test(){        System.out.println(config.getDatahubParams());        System.out.println(config.getMap());    }}

运行结果:

application.properties配置注入出现错误

配置list,map(list内含对象)多层嵌套问题,注入对象失败,无法加载到配置文件

继SpringBoot使用@Value无法赋值之后,kimball又遇到一个application.properties配置注入问题,可能作为新手,这里该踩得坑都掉下去了~真是一踩一个准。

问题描述

application.properties配置注入出现错误,配置list,map(list内含对象)多层嵌套问题,注入对象失败,无法加载到配置文件。后询问多方大神,仍无法加载,那么自己慢慢测试吧。

我的目录结构是这样:对象建立了postinfolist>postinfo>header三层结构,header内含Map键值对,postinfolist是postinfo的List集合,故也算是个多层嵌套的格式。一开始我的配置如下:

大概情况应该是描述清楚了吧,下面我们来分析没有加载到配置文件的错误原因及分析方法。

作为freshman,我只是一步步验证,既然加载不到这么多层,那么我从最低层header验证,单独配置了下header,header.headerMap.AppKey=xxx(header prefix注意修改),结果加载到了,那么好,说明不是配置文件加载啊或是引入啊什么的问题,应该是多层嵌套自己写的有误。

那么第二步,往上一层,配置postinfo.header.headerMap.AppKey=xxx(prefix对应修改,不在多说),又加载到了,那么可以知道问题所在了,配置postinfolist时,List这块儿配置的不正确。这样一步步排查,我们可以找到问题所在,所以有问题,先想排查方法,找到问题所在就可以迎刃而解,本质有点像方法论~

那么再回看这个配置文件,此时对application.properties的配置也有点领悟了,实际上就是 自上而下的表达出你要注入的参数,也就是我的上层postinfolist(Springboot帮我们注入时先找这个最上级),而后一点一点往后去找对应关系,也就是先找到对象内的postinfolist这个List集合,即对象的成员变量,那么配置我们就可以写postinfolist.postinfolist获得了List集合,而后要表达集合里的postinfo,postinfolist.postinfolist[0],即相当于list.get(0),这么来看是不是很容易理解application的配置文件写法了,而后再逐层表示到你要注入的参数即可,也就是postinfolist.postinfolist[0].header.headerMap.AppKey,之前的写法只是觉得是对应上prefix的前缀就可以读到了,而其实Springboot为我们做的更多,将你写的对象通过一步步层级关系来分析注入,也算是新人对Springboot的一点敬仰吧,之前接触过一段ssh,那是一段痛苦的历程,很多东西要自己配置,而springboot真是让我们把重心放在开发功能上而不是繁琐的配置文件上。

到此,相信大家对"springboot从application.properties中注入list和map方式是什么"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

配置 问题 对象 文件 多层 方法 方式 也就是 所在 错误 分析 内容 写法 参数 只是 实际 更多 结构 结果 学习 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 金融科技创新监管互联网金融 鑫亿盛互联网科技 极限挑战互联网科技 深圳天众互联网科技公司 安控科技rtu产品工业互联网 互联网科技创新服务 宁夏科技产业互联网案例 彤创互联网科技有限公司 青岛科技大学互联网大赛研究生 开一家科技互联网公司需要多少钱 天津腾达互联网科技有限公司 阿里互联网科技企业 科技赋能视角下互联网保险发展 互联网相关科技技术 上海创道互联网络科技有限公司 互联网科技企业商标注意事项 广州三三互联网科技有限公司 绵阳真晨互联网科技有限公司 优雇互联网科技有限公司 知域互联网科技有限公司官网 互联网加科技 互联网科技有限公司图片 与互联网科技公司 金融科技 互联网金融 万易互联网科技 互联网科技革命 贷财互联网科技 隆华科技工业互联网 国大互联网教育科技有限公司薪资 北京瑞云互联网科技有限公司
0