Java基础系列:读取yml文件

article/2025/8/30 20:25:10

1 简介

为什么写关于yaml文件读取?
源于接手同事代码。
他做业务时,使用了阿里云的OSS存储服务,将配置文件以*.yml形式存储在OSS,
Java服务定时调用OSS配置文件,实现对应的业务逻辑。
配置文件存储在OSS,可以灵活变更配置,而无需重启服务或者重新部署服务。
但是,使用过程中,遇到了jar包冲突。
OSS的jar包与其他jar包中的jar包版本冲突,导致部分功能无法正常使用。
为保证所有功能正常运行,
特,将存储与OSS的yml配置文件,放在本地resources中,避免使用OSS组件。

通过yml映射实体,直接实例化实体。

2 配置

2.1 依赖

<dependency><groupId>org.yaml</groupId><artifactId>snakeyaml</artifactId><version>1.23</version>
</dependency>

2.2 yml文件

src/main/resources/test.yml

uid: 0x0001
nickname: xindaqi
sex: China
---
uid: 0x0002
nickname: xinerqi
sex: China

2.3 映射的实体

package com.monkey.java_study.common.entity;/*** User实体** @author xindaqi* @since 2021-01-23*/public class UserEntity {/*** 用户id*/private String uid;/*** 用户名称*/private String nickname;/*** 用户性别*/private String sex = "haha";public UserEntity() {}public UserEntity(String uid) {this.uid = uid;}public UserEntity(String uid, String nickname, String sex) {this.uid = uid;this.nickname = nickname;this.sex = sex;}public UserEntity copy() {return new UserEntity(uid, nickname, sex);}public String getUid() {return uid;}public void setUid(String uid) {this.uid = uid;}public String getNickname() {return nickname;}public void setNickname(String nickname) {this.nickname = nickname;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}@Overridepublic String toString() {return "UserEntity{" +"uid=" + uid +", nickname='" + nickname + '\'' +", sex='" + sex + '\'' +'}';}
}

2.4 读取yml配置

package com.monkey.java_study.functiontest;import com.monkey.java_study.common.entity.UserEntity;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.yaml.snakeyaml.Yaml;
import org.yaml.snakeyaml.constructor.Constructor;import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;/*** 读取Yaml配置文件.** @author xindaqi* @date 2022-03-02 14:54*/
public class YamlTest {private static final Logger logger = LoggerFactory.getLogger(YamlTest.class);@Testpublic void readYamlConfiguration() {try(InputStream content = com.monkey.java_study.thirdparty.YamlTest.class.getClassLoader().getResourceAsStream("test.yml")) {Yaml yaml = new Yaml(new Constructor(UserEntity.class));Iterable<Object> its = yaml.loadAll(content);List<UserEntity> userEntityList = new ArrayList<>();for(Object it : its) {userEntityList.add((UserEntity) it);}logger.info(">>>>>>>>User:{}", userEntityList);} catch(Exception ex) {throw new RuntimeException(ex);}}
}

3 结果

在这里插入图片描述


http://chatgpt.dhexx.cn/article/XmOw14XF.shtml

相关文章

如何打开.yml文件

问题说明 我是在linux系统下&#xff0c;需要打开.yml文件来查看。 错误尝试 1 linux系统下 vi、vim命令 当我使用 vim 或者 vi 命令的时候&#xff0c;文件确实是打开了&#xff0c;但是内容是乱码&#xff0c;所以这个解决办法不行。 2 windows系统下记事本 当我在linu…

spring自定义yml文件解析器

spring自定义yml文件解析器 pom 引入依赖yml 文件自定义yml文件解析的工厂 YmlPropertySourceFactoryJdbcConfig 配置类spring 启动类测试结果 srping 配置自定yml解析器 以最简单的获取数据源的代码示例 整体文件结构如下: pom 引入依赖 <dependencies><dependency…

yml文件变红

yml文件变红 目录 yml文件变红原因文件夹标记 原因 打开项目配置文件这样子&#xff0c;先是查看idea的modules&#xff0c;配置没问题。后刷新maven也没问题。 文件夹标记 原因是resources不是 Resources Root 文件夹&#xff0c;需要标记

yml文件报错

yml文件报错 1、YML文件测试是否由于格式tab键的原因启动失败的问题&#xff1a;yml测试网站 2、很多依赖在修改后需要重新加载maven依赖&#xff0c;如下图所示&#xff1a;3、重启项目发现问题解决&#xff01;

java springboot yml文件配置 多环境yml

如果是properties改用yml&#xff0c;直接新增一个 .yml &#xff0c;删除原 .properties &#xff0c;系统会自动扫描 application.properties 和 application.yml文件&#xff08;如果同时存在两个文件&#xff0c;则会优先使用.properties文件&#xff1f;&#xff09;。 注…

yml文件的使用

1.定义各种数据 #字符串 country: beijing #数值 port: 8080 #bolean party: true birthday: 1949-10-01 #对象 user:name: itcastage: 16 #集合 likes:- game- music likes2: [game,music] #对象集合 users:- name: zhangsanage: 18- name: lisiage: 18 users2: [{name:zhang…

yml文件使用

yml文件使用 yml文件使用yml文件格式使用使用方式一&#xff08;ConfigurationProperties&#xff09;使用方式二&#xff08;Value&#xff09; JSR303数据校验总结 yml文件使用 yml文件是springboot推荐使用的配置文件格式&#xff0c;它相较于propertites格式文件更强大&am…

SpringBoot:yml文件详解

目录 获取数据第三种方式 多环境配置 日志打印 过滤器与拦截器的配置 过滤器配置: 拦截器的配置 全局异常处理器 获取数据第三种方式 数据可能是一个对象形式, 不需要一个一个获取, 定义一个对应的类, 要求属性与yml的数据的二级属性名一样, 使用springboot提供的注解Co…

qq图

最近在做关联分析的时候&#xff0c;研究了一下QQ图的绘制方法 QQ图的全称是Quantile-Quantile plot图&#xff0c;主要用于去判断某一系列的值是否符合正态分布&#xff0c;横坐标是理论值&#xff0c;纵坐标是实际值&#xff0c;当纵坐标和横坐标的坐标值相同的时候&#xf…

如何关掉 PC QQ 烦人的 QQ 频道

QQ 频道被 QQ 强制捆绑, 很多人用不到, 而且还不能完全免打扰, 点击消息的时候, QQ 频道就会跳出来, 非常的烦人. 步骤 关闭掉 QQ. 然后找到 QQ 频道的本体目录: 使用 %LOCALAPPDATA%\Tencent 可以快速跳转到这里 打开文件夹属性, 转到 “安全” 选项卡, 然后点击 “高级” …

python 给QQ好友定时发送消息

python 给QQ好友定时发送消息 前言初衷代码效果后记 前言 在小编的上一篇python文章中提到了关于微信或者QQ的消息“轰炸”&#xff08;其实我是想你也去看看&#xff0c;23333 [狗头保命]&#xff09;&#xff0c;那是简单版本&#xff0c;今天我要讲的是&#xff0c;发送消息…

QQ再次被大规模盗号

我是卢松松&#xff0c;点点上面的头像&#xff0c;欢迎关注我哦&#xff01; QQ被大规模盗号已经不是一次两次了&#xff0c;感觉腾讯好像没有太好的解决办法。 昨天(周日)QQ又出下了大规模盗号情况&#xff1a;大量用户反馈称遇到了自己或是身边的朋友、家人、同事等被盗号…

SpringBoot整合定时任务和邮件发送(邮箱 信息轰炸 整蛊)

SpringBoot整合定时任务和邮件发送&#xff08;邮箱 信息轰炸 整蛊&#xff09; 目录 SpringBoot整合定时任务和邮件发送&#xff08;邮箱 信息轰炸 整蛊&#xff09;1.概述2.最佳实践2.1创建项目引入依赖(mail)2.2 修改yml配置文件2.3 启动类添加EnableScheduling注解2.4 执行…

让对方qq崩溃的代码2020_为什么都瞧不起QQ邮箱?

“我真他妈受够公路商店了&#xff01;” 某部门的某大哥抱怨自己一天到晚被办公室的烟熏的眼睛都睁不开&#xff0c;无论如何都要跳槽到一个起码能供应自然氧气的公司。 但当我从背后偷偷瞄了一眼他的电脑&#xff0c;发现他认认真真的用QQ邮箱起草了一份简历&#xff0c;我就…

QQ防撤回

QQ防撤回 版本截图 收集信息 这一步非常关键,因为在分析时,思路如果不对,基本上是分析不出来的,这里我们从敏感字符串开始。先搜一搜撤销的英文单词 如图知道了好几个单词,锁定关键字一个一个使用Notepad++的搜索功能,再文件中搜索。 查看搜索结果,发现又两个和消…

揭秘:QQ盗号背后的产业链,惊人的暴利!

最好的欺骗手段&#xff0c;莫过于让其信任的人、事、物蒙蔽判断&#xff0c;待到入圈之时&#xff0c;便是案板上的肉。 你所看到的、想到的、听到的、闻到的、摸到的&#xff0c;是否是别人有意让你看到、听到、闻到、摸到、想到&#xff1f; 人最大的错误就是看所看、想所…

QQ群怎么快速封群,如何举报骗子QQ群可以使之封群?

QQ群是个开放式的交流平台&#xff0c;充斥着各色各样的人和行业&#xff0c;不少人都被一些表面光鲜亮丽&#xff0c;背地乌烟瘴气的QQ群吸引过&#xff0c;直到出问题的时候才知道为时已晚。 以目前腾讯的审核力度来看&#xff0c;正常举报&#xff0c;封群是极其困难的&…

不再害怕打字慢(python信息轰炸)

不知道各位小伙伴有没有这样的烦恼&#xff1a;在和自己的朋友聊天的时候&#xff0c;自己无论是使用九键还是26键&#xff0c;都没有他们打字快&#xff1b;双方进行信息轰炸的时候&#xff0c;更没有他们快了。下面这篇文章将会解决这个烦恼。话不多说&#xff0c;直接上才艺…

【用python写一个简易的消息轰炸代码】

用python写一个简易的消息轰炸代码 前言一、思路讲解二、使用步骤1.引入库2.完整代码 总结 前言 有没有在qq&#xff0c;微信想用一句话不停怼一个人&#xff0c;这篇文章教你在回车能发送消息的一系列软件中&#xff0c;快速多次发送你想发的话。 一、思路讲解 1.定位输入框…

qq消息连发脚本

这是我闲的没事&#xff0c;在网上学的&#xff0c;虽然功能比较单一&#xff0c;只能重复发一个信息&#xff0c;但闲得无聊可以抖一抖好你的基友【doge】 代码如下&#xff1a; #include<iostream> #include<windows.h> using namespace std;int main() {int t…