当前位置: 首页 > news >正文

Spring Boot 项目中读取 YAML 文件中的数组、集合和 HashMap

在 Spring Boot 项目中,我们经常使用 YAML 文件来配置应用程序的属性。在这篇博客中,我将模拟如何在 Java 的 Spring Boot 项目中读取 YAML 文件中的数组、集合和 HashMap。

1. 介绍

YAML(YAML Ain't Markup Language)是一种人类可读的数据序列化格式,通常用于配置文件。在 Spring Boot 中,我们可以使用 @ConfigurationProperties 注解和 application.yml 文件轻松管理应用程序的配置。

2. 准备工作

首先,确保你的 Spring Boot 项目中包含以下依赖:

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency>

3. 创建 YAML 文件

src/main/resources 目录下创建一个名为 application.yml 的文件,并添加以下内容:

server:port: 6666
lps:languages:- Java- Python- C- C++- C#colors:- red- green- bluefruits:- name : appleprice : 3.88- name : bananaprice : 2.88- name : orangeprice : 5.28ages:john: 30alice: 25bob: 35

这个文件包含了两个数组、一个水果列表和一个年龄的 HashMap。

4. 创建配置类

创建一个 Java 配置类,用于将 YAML 文件中的属性映射到对象。创建一个名为 AppProperties.java 的文件:

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;/*** @author 阿水* @ClassName LpsProperties * @description: TODO* @date 2023年11月26日* @version: 1.0*/
@Component
@ConfigurationProperties(prefix = "lps")
@Data
public class LpsProperties {private String[] languages;private List<String> colors;private List<Fruits> fruits;private Map<String, Integer> ages;@Datapublic static class Fruits {private String name;private Double price;}
}

5. 注入配置类

在你的服务或组件中,通过 @Autowired 注解将 AppProperties 配置类注入,然后访问其中的属性:

 @AutowiredLpsProperties lpsProperties;

6. 运行项目

在你的应用程序中使用 LpsProperties类,并调用方法,你将能够从 YAML 文件中读取数组、集合和 HashMap,并在控制台上输出它们。

@SpringBootTest
class CountDemoApplicationTests {@AutowiredLpsProperties lpsProperties;@Testvoid contextLoads() {String[] languages = lpsProperties.getLanguages();System.out.print("常见编程语言:");for (String language : languages) {System.out.print(language + " ");}System.out.println("等等");System.out.println("----------------------");Map<String, Integer> ages = lpsProperties.getAges();ages.forEach((key, value) -> System.out.println(key + "今年" + value + "岁"));System.out.println("----------------------");List<String> colors = lpsProperties.getColors();for (String color : colors) {System.out.println("收到的颜色为:" + color);}System.out.println("----------------------");List<LpsProperties.Fruits> fruits = lpsProperties.getFruits();fruits.forEach(fruit -> System.out.println(fruit));}}

7. 结论

通过使用 @ConfigurationProperties 注解和 YAML 文件,我们可以轻松地将配置属性映射到 Java 对象中。这使得在 Spring Boot 项目中管理数组、集合和 HashMap 的配置变得简单而直观。

希望这篇博客对你在 Spring Boot 项目中读取 YAML 文件中的数组、集合和 HashMap 有所帮助。如有疑问或建议,请随时提出。

相关文章:

Spring Boot 项目中读取 YAML 文件中的数组、集合和 HashMap

在 Spring Boot 项目中&#xff0c;我们经常使用 YAML 文件来配置应用程序的属性。在这篇博客中&#xff0c;我将模拟如何在 Java 的 Spring Boot 项目中读取 YAML 文件中的数组、集合和 HashMap。 1. 介绍 YAML&#xff08;YAML Aint Markup Language&#xff09;是一种人类…...

Python正则表达式:match()和search()函数全面解读

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 在Python中&#xff0c;正则表达式是强大的工具&#xff0c;能够用于文本匹配、搜索和替换。re模块提供了许多函数来处理正则表达式&#xff0c;其中match()和search()是两个常用的函数。本文将深入探讨这两个函…...

AIGC ChatGPT4总结Linux Shell命令集合

在Linux中,Shell命令的数量非常庞大,因为Linux提供了各种各样的命令来处理系统任务。这些命令包括GNU核心工具集、系统命令、shell内置命令以及通过安装获得的第三方应用程序命令。以下是一些常见的Linux命令分类及其示例,但请注意,这不是一个全面的列表,因为列出所有命令…...

力扣labuladong——一刷day61

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、力扣865. 具有所有最深节点的最小子树二、力扣1123. 最深叶节点的最近公共祖先三、力扣1026. 节点与其祖先之间的最大差值四、力扣1120. 子树的最大平均值 …...

nacos配置变更导致logback日志异常

问题背景: 线上的服务突然内存爆满&#xff0c;查服务器突然发现&#xff0c;日志全部打印到了/tmp/tomcat.xxx.port目录下&#xff0c;后来对应操作时间&#xff0c;和nacos修改配置是同一时间发生的&#xff0c;但是疑惑的点是&#xff0c;nacos配置变更为什么会引起logback的…...

【spring(五)】SpringMvc总结 SSM整合流程

目录 一、SpringMVC简介&#xff1a; 二、SpringMVC快速入门&#xff1a; 三、SpringMVC bean的管理&#xff1a;⭐ ①配置bean ②扫描bean 四、SpringMVC配置类&#xff1a;⭐ 五、SpringMVC 请求与响应 六、SpringMVC REST风格 七、SSM整合 异常处理&#xff1a; 八、…...

1、windows10系统下Qt5.12.0与卸载

一、安装包下载 1、Qt社区下载 https://download.qt.io/archive/qt/5.12/5.12.10/qt-opensource-windows-x86-5.12.10.exe 2、百度网盘下载 链接&#xff1a;百度网盘 请输入提取码 3、Qt官网下载&#xff1a; Try Qt | 开发应用程序和嵌入式系统 | Qt 二、安装提示 下…...

WebGL/threeJS面试题扫描与总结

什么是 WebGL&#xff1f;什么是 Three.js&#xff1f;请解释three.js中的WebGL和Canvas的区别&#xff1f; WebGL(全写Web Graphics Library)是一种3D绘图协议&#xff0c;这种绘图技术标准允许把JavaScript和OpenGL ES 2.0结合在一起&#xff0c;通过增加OpenGL ES 2.0的一个…...

Qt connect()方法Qt::ConnectionType

connect() Qt&#xff0c;绑定信号和槽原型&#xff1a; static QMetaObject::Connection connect(const QObject *sender, const char *signal,const QObject *receiver, const char *member, Qt::ConnectionType Qt::AutoConnection);static QMetaObject::Connection conn…...

HIVE SQL时间函数

目录 current_timestamp()获取当前时间unix_timestamp()获取当前时区的UNIX时间戳from_unixtime()时间戳转日期函数unix_timestamp(string date)日期转时间戳函数提取日期中的年月日时分秒weekofyear (string date)日期转周函数日期比较函数datediff(string enddate, string st…...

linux磁盘的LVM、交换分区以及文件系统

目录 逻辑卷LVM LVM管理 LVM特点 LVM的制作 创建物理卷 创建卷组 创建逻辑卷 格式化文件系统 挂载逻辑卷 LVM的扩容 添加硬盘做物理卷 卷组扩容 扩容逻辑卷 给文件系统扩容 LVM移除 LVM的缩容 交换分区 查看当前交换分区&#xff1a;free Swap&#xff1a;虚…...

【HDFS】ActiveNamenodeResolver#getNamespaces 方法调用点梳理

获取所有的注册在router里的active状态的集群。 /*** Get a list of all namespaces that are registered and active in the* federation.** @return List of name spaces in the federation* @throws IOException Throws exception if the namespace list is not* av…...

算法—双指针

双指针算法可以帮忙把时间复杂度降低一个维度&#xff0c;即原本O&#xff08;n2&#xff09;降为O(n)&#xff1b;将O(n)降为O(1) 移动零 移动零 题目解析 将所有0移动到末尾保持非0元素相对顺序对数组进行原地操作&#xff08;不开辟额外空间&#xff09; 算法原理 数组…...

​[Oracle]编写程序,键盘输入n,计算1+前n项之和。测试案例:输入:10 输出:22.47​

编写程序&#xff0c;键盘输入n,计算1前n项之和。 测试案例&#xff1a; 输入&#xff1a;10 输出&#xff1a;22.47 代码如下&#xff1a; set serveroutput on declare v_sum number:0;v_n number;beginv_n:&n;for i in 1..v_n loopv_sum:v_sumsqrt(i); end loop; d…...

【视觉SLAM十四讲学习笔记】第三讲——旋转向量和欧拉角

专栏系列文章如下&#xff1a; 【视觉SLAM十四讲学习笔记】第一讲——SLAM介绍 【视觉SLAM十四讲学习笔记】第二讲——初识SLAM 【视觉SLAM十四讲学习笔记】第三讲——旋转矩阵 本章将介绍视觉SLAM的基本问题之一&#xff1a;如何描述刚体在三维空间中的运动&#xff1f; 旋转向…...

【UGUI】制作用户注册UI界面

这里面主要的操作思想就是 1.打组 同一个事情里面包含两个UI元素都应该打组便于管理和查找 2.设置锚点位置 每次创建一个UI都应该设置他的锚点以便于跟随画布控制自己的&#xff1a;相对位置 3. 设置尺寸&#xff08;像素大小&#xff09; 每一次UI元素哪怕是作为父物体的…...

【UE】透视效果

效果 步骤 1. 新建一个空白工程 2. 添加一个第三人称游戏和初学者内容包到内容浏览器 3. 新建一个材质&#xff0c;这里命名为“M_Perspective” 打开“M_Perspective”&#xff0c;设置材质域为后期处理 添加三个“SceneTexture”节点&#xff0c;场景纹理ID选项分别设置为“…...

前端下载文件或者图片方式,window.open或者a标签形式

首先分别讲一下下载文件的方式都有哪些 1.通过a标签的方式下载文件 <a href"http://www.baidu.com" download"baidu.html">下载</a> 我们点击下载&#xff0c;发现是跳转到了百度的首页&#xff0c;并没有真的下载文件。 因为a标签下载只能…...

webpack配置scss loader

国内GPT站点&#xff1a;https://www.atalk-ai.com 在 Webpack 中配置 sass-loader 用于处理 .scss 文件通常涉及以下步骤&#xff1a; 安装必要的依赖&#xff1a; 你需要安装 sass-loader&#xff0c;以及 sass 本身&#xff08;sass 是 node-sass 的替代品&#xff0c;更快且…...

k8s有状态部署mysql主从(local pv持久化)

1、修改自己对应的命名空间 2、local pv的方式必须先创建好目录在给权限 3、sts部署文件密码都要修改好在部署 yaml资源文件如下&#xff1a; #配置mysql的root密码再部署&#xff0c;如果部署了在修改root密码就会失败&#xff0c;必须在初始化就把root密码修改好 #部署采…...

3步突破格式限制:网易云音乐NCM文件转换终极指南

3步突破格式限制&#xff1a;网易云音乐NCM文件转换终极指南 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM加密文件无法在其他设备播放而烦恼吗&#xff1f;ncmdump开源工具为你提供完美的NCM格式转换解…...

Pseudogen:让代码说人话,你的智能代码翻译官

Pseudogen&#xff1a;让代码说人话&#xff0c;你的智能代码翻译官 【免费下载链接】pseudogen A tool to automatically generate pseudo-code from source code. 项目地址: https://gitcode.com/gh_mirrors/ps/pseudogen 你是否曾面对一段复杂的代码&#xff0c;感觉…...

Windows 11硬件限制绕过终极指南:让不支持的设备完美运行最新系统

Windows 11硬件限制绕过终极指南&#xff1a;让不支持的设备完美运行最新系统 【免费下载链接】MediaCreationTool.bat Universal MCT wrapper script for all Windows 10/11 versions from 1507 to 21H2! 项目地址: https://gitcode.com/gh_mirrors/me/MediaCreationTool.ba…...

百度网盘macOS客户端逆向工程深度解析:Method Swizzling技术实现与应用

百度网盘macOS客户端逆向工程深度解析&#xff1a;Method Swizzling技术实现与应用 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 百度网盘SVIP破解插…...

JMeter接口测试从零到实战:新手避坑指南与自动化闭环

1. 为什么接口测试不是“点点点”&#xff0c;而JMeter是多数人绕不开的第一把刀很多人刚接触接口测试时&#xff0c;第一反应是&#xff1a;“不就是用Postman发个请求、看个返回码吗&#xff1f;还要学啥工具&#xff1f;”我带过十几批测试新人&#xff0c;八成在入职前两周…...

多重插补与MICE:量化ESG评分不确定性的工程实践

1. 项目概述&#xff1a;当ESG评分遇上数据“黑洞”&#xff0c;我们如何量化不确定性&#xff1f;在金融和可持续投资领域&#xff0c;ESG评分正成为评估公司长期价值与风险的关键标尺。然而&#xff0c;从业者们都心知肚明一个公开的秘密&#xff1a;支撑这些评分的底层数据&…...

Cursor Free VIP:终极解决方案,5步实现Cursor Pro永久免费使用

Cursor Free VIP&#xff1a;终极解决方案&#xff0c;5步实现Cursor Pro永久免费使用 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: You…...

体验Taotoken多模型路由能力在不同负载下的稳定性表现

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 体验Taotoken多模型路由能力在不同负载下的稳定性表现 在将大模型能力集成到实际业务时&#xff0c;服务的稳定性与响应速度是开发…...

【2024B站算法白皮书级洞察】:ChatGPT如何精准预测“推荐池准入阈值”?3个被官方文档隐去的关键信号

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;【2024B站算法白皮书级洞察】&#xff1a;ChatGPT如何精准预测“推荐池准入阈值”&#xff1f;3个被官方文档隐去的关键信号 Bilibili 2024年Q2推荐系统升级后&#xff0c;“推荐池准入阈值”&#xff…...

二维码修复工具QrazyBox:如何拯救你无法扫描的损坏二维码?

二维码修复工具QrazyBox&#xff1a;如何拯救你无法扫描的损坏二维码&#xff1f; 【免费下载链接】qrazybox QR Code Analysis and Recovery Toolkit 项目地址: https://gitcode.com/gh_mirrors/qr/qrazybox 你是否曾遇到过这种情况&#xff1a;一个重要的二维码因为打…...