千家信息网

如何进行springBoot yml文件的list读取问题总结

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,如何进行springBoot yml文件的list读取问题总结,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。springBoot y
千家信息网最后更新 2026年11月04日如何进行springBoot yml文件的list读取问题总结

如何进行springBoot yml文件的list读取问题总结,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

springBoot yml文件的list读取问题

折腾了很久,记录下。

配置如下

# 自定义数据上报信息xx:  # 机组信息    machine1s:      -   name: XXXX          frequency: null          frequency-unit: null          pressure: 0.01          pressure-unit: Pa          flow: 0          flow-unit: NM3/H          state: 停机          runtime: 17.5          runtime-unit: 天      -   name: XXXX          frequency: 42.4          frequency-unit: HZ          pressure: 0.39          pressure-unit: Pa          flow: 4730          flow-unit: NM3/H          state: 运行          runtime: 12.5          runtime-unit: 天      -   name: XXXX          frequency: 46.4          frequency-unit: HZ          pressure: 0.00          pressure-unit: Pa          flow: 0          flow-unit: NM3/H          state: 停机          runtime: 8.2          runtime-unit: 天      -   name: XXXX          frequency: 41.4          frequency-unit: HZ          pressure: 0.39          pressure-unit: Pa          flow: 9532          flow-unit: NM3/H          state: 运行          runtime: 3.2          runtime-unit: 天      -   name: XXXX          frequency: null          frequency-unit: null          pressure: 0.38          pressure-unit: Pa          flow: 4800          flow-unit: NM3/H          state: 停机          runtime: 20.4          runtime-unit: 天      -   name: XXXX          frequency: null          frequency-unit: null          pressure: 0.01          pressure-unit: Pa          flow: 0          flow-unit: NM3/H          state: 停机          runtime: 7.5          runtime-unit: 天

1.定义配置类

@ConfigurationProperties(prefix = "xx")public class TXMachinesProperties {     private List> machine1s;     public List> getMachine1s() {        return machine1s;    }     public void setMachine1s(List> machine1s) {        this.machine1s = machine1s;    } }

注意:

a.这里prefix写到接收对象的前一级即可;

b.这里的变量名必须要与配置的名称一致,才可自动接收。

2.定义启动的配置类

这里其实可与上面的配置类写在一起,但是一个类就是做一件事情,就做了隔离。

@Configuration@EnableConfigurationProperties({TXMachinesProperties.class})public class TXMachinesConfig {}

3.使用方式

采用下面的方式即可。这里注意,由于使用这个yml的注解是属于SpringBoot的框架内进行的,因此这个属性注入只能在标有Spring的注解的类的范围内使用,不能在普通类使用。

@Autowired    private TXWorkShopAlarmProperties txWorkShopAlarmProperties;

可以解决了~

读取yml文件里的list配置

YAML 支持以下几种数据类型

  • 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)

  • 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)

  • 纯量(scalars):单个的、不可再分的值

这里只介绍list类型的读取

yml里的list配置(以 - 开头的行表示构成一个数组:):

weixin:  configs:   - schId: 111      appId: 11111      appSecret: 11111      templateId: 111111    - schId: 2222      appId: 222222      appSecret: 2222222      templateId: 2222222

导入jar包

            org.springframework.boot            spring-boot-configuration-processor            2.2.1.RELEASE        

写一个微信配置的实体类,将配置文件中配置的每一个属性的值,映射到这个实体类中

import lombok.Data;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.stereotype.Component;import java.util.List;@Component@Data@ConfigurationProperties(prefix = "weixin")public class WxConfig {    private List configs;    @Data    public static class Config {        private Integer schId;        private String appId;        private String appSecret;        private String templateId;    }}

拿到配置文件里的内容

1.注入该实体类

 @Autowired    private WxConfig wxConfig;

2.解析,我这里是将其转为学校id为key的map,方便我后面使用,按照自己想要的读取就好了JSON.toJSONString(wxConfig)

public  Map getWeiXinConfig(){        JSONObject o = JSON.parseObject(JSON.toJSONString(wxConfig));        JSONArray jsonArray = o.getJSONArray("configs");        Map map = new HashMap<>();        if (jsonArray.size() != 0) {            for (int j = 0; j < jsonArray.size(); j++) {                Map map2 = new HashMap();                JSONObject o1 = jsonArray.getJSONObject(j);                String appId = o1.getString("appId");                String appSecret = o1.getString("appSecret");                Integer schId = o1.getIntValue("schId");                String templateId = o1.getString("templateId");                map2.put("appId", appId);                map2.put("appSecret", appSecret);                map2.put("schId", schId);                map2.put("templateId", templateId);                map.put(schId,map2);            }        }        return map;    }

调用方法getWeiXinConfig(),输出map的输出结果:

关于如何进行springBoot yml文件的list读取问题总结问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

配置 文件 问题 实体 信息 内容 对象 属性 数据 数组 方式 方法 更多 注解 类型 面的 帮助 解答 输出 运行 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 花魁咖啡 博彦科技互联网金融 美国互联网科技巨头监管 互联网最新的科技有限公司 壕鑫互联网络科技 互联网 科技服务平台 卫星互联网科技股票 玖二柒互联网科技公司待遇 互联网金融科技公司干啥的 上海宁丞科技互联网 华夏互联网科技业 注册互联网科技公司经营范围大全 中国互联网公司排名锤子科技 高科技互联网发展前景如何 互联网科技公司营业执照怎么办理 华中科技大学互联网的牛人 广西科技产业互联网是什么 银川新华互联网科技学校是国营吗 互联网科技创新创业项目 北京品多多互联网科技有限公司 猪兼强互联网科技 百单互联网科技有限公司 菲比寻常互联网科技 深圳期待互联网科技 华中科技有哪些互联网大佬 互联网保险科技创业 国大互联网教育科技有限公司薪资 广州百诚互联网科技有限公司官网 宇信科技在杭州互联网排第几 恒生科技互联网指数十大成分股
0