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

Java如何从yml文件获取对象

目录

    • 一、背景
    • 二、application.yml
    • 三、ChinaPersonFactory.java
    • 四、使用示例

一、背景

在 SpringBoot 中,我们可以使用 @Value 注解从属性文件(例如 application.ymlapplication.properties)中获取配置信息,但是只能获取简单的字符串或数值类型的配置信息。

如果想从 yml 中获取对象等复杂的数据类型,可以使用 @ConfigurationProperties 注解。

二、application.yml

首先,我们在 application.yml 文件中指定了 china 前缀后面的 persons 里面存放了带有 name、sex、age 属性的对象。

china:persons:- name: 张三sex: Fage: 24- name: 李四sex: Mage: 25

三、ChinaPersonFactory.java

ChinaPersonFactory.java 使用 @ConfigurationProperties 注解,指定 china 前缀,从 application.yml 文件中获取 china 前缀开头的 Person 对象数组。

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;import java.util.ArrayList;
import java.util.List;/*** <p> @Title ChinaPersons* <p> @Description 从 yml 中获取 Person 对象** @author ACGkaka* @date 2023/3/23 19:11*/
@Configuration
@ConfigurationProperties(prefix = "china")
public class ChinaPersonFactory {// 这里的名字要和yml中的对应字段名称一致private static List<Person> persons = new ArrayList<>();// 注意此处的 static 关键字public static List<Person> getPersons() {return persons;}public void setPersons(List<Person> persons) {ChinaPersons.persons = persons;}/*** 基础人员信息* 注意:该类要使用 static 关键字修饰,否则会报错。*/@Datapublic static class Person {// 姓名private String name;// 性别private String sex;// 年龄private Integer age;}
}

四、使用示例

做好以上准备工作后,我们可以在项目中通过调用如下代码获取配置中的对象数组:

List<Person> list = ChinaPersonFactory.getPersons()

整理完毕,完结撒花~ 🌻





参考地址:

1.Java获取yml文件的数组对象,https://blog.csdn.net/qq_41057885/article/details/121425355

相关文章:

Java如何从yml文件获取对象

目录一、背景二、application.yml三、ChinaPersonFactory.java四、使用示例一、背景 在 SpringBoot 中&#xff0c;我们可以使用 Value 注解从属性文件&#xff08;例如 application.yml 或 application.properties&#xff09;中获取配置信息&#xff0c;但是只能获取简单的字…...

vue使用tinymce实现富文本编辑器

安装两个插件tinymce和 tinymce/tinymce-vue npm install tinymce5.10.3 tinymce/tinymce-vue5.0.0 -S 注意&#xff1a; tinymce/tinymce-vue 是对tinymce进行vue的包装&#xff0c;主要作用当作vue组件使用-S保存到package.json文件 2. 把node_modules/tinymce下的目录&a…...

yolov4实战训练数据

1、克隆项目文件 项目Github地址&#xff1a;https://github.com/AlexeyAB/darknet 打开终端&#xff0c;克隆项目 git clone https://github.com/AlexeyAB/darknet.git无法克隆的话&#xff0c;把https修改为git git clone git://github.com/AlexeyAB/darknet.git修改Makef…...

第十四章 DOM的Diff算法与key

React使用Diff算法来比较虚拟DOM树和真实DOM树之间的差异&#xff0c;并仅更新必要的部分&#xff0c;以提高性能。key的作用是在Diff算法中帮助React确定哪些节点已更改&#xff0c;哪些节点已添加或删除。 我们以案例来说明。 使用索引值和唯一ID作为key的效果 1、使用索引…...

MySQL调优

MySQL调优常见的回答如何回答效果更好业务层的优化如果只能用mysql该如何优化代码层的优化SQL层面优化总结常见的回答 SQL层面的优化——创建索引&#xff0c;创建联合索引&#xff0c;减少回表。再有就是少使用函数查询。 回表指的是数据库根据索引&#xff08;非主键&#…...

《Flutter进阶》flutter升级空安全遇到的一些问题及解决思路

空安全出来挺久了&#xff0c;由于业务需求较紧&#xff0c;一直没时间去升级空安全&#xff0c;最近花了几天去升级&#xff0c;发现其实升级也挺简单的&#xff0c;不要恐惧&#xff0c;没有想象中的多BUG。 flutter版本从1.22.4升到3.0.5&#xff1b; compileSdkVersion从1…...

最值得入手的五款骨传导耳机,几款高畅销的骨传导耳机

骨传导耳机是一种声音传导方式&#xff0c;主要通过颅骨、骨骼把声波传递到内耳&#xff0c;属于非入耳式的佩戴方式。相比传统入耳式耳机&#xff0c;骨传导耳机不会堵塞耳道&#xff0c;使用时可以开放双耳&#xff0c;不影响与他人的正常交流。骨传导耳机不会对耳朵产生任何…...

HashMap源码分析 (1.基础入门) 学习笔记

本章为 《HashMap全B站最细致源码分析课程》 拉钩教育HashMap 学习笔记 文章目录1. HashMap的数据结构1. 数组2. 链表3. 哈希表3.1 Hash1. HashMap的数据结构 数据结构中有数组和链表来实现对数据的存储&#xff0c;但这两者基本上是两个极端。 1. 数组 在生成数组的时候数…...

6 使用强制类型转换的注意事项

概述 在C语言中,强制类型转换是通过直接转换为特定类型的方式来实现的,类似于下面的代码。 float fNumber = 66.66f; // C语言的强制类型转换 int nData = (int)fNumber; 这种方式可以在任意两个类型间进行转换,太过随意和武断,很容易带来一些难以发现的隐患和问题。C++为…...

Leetcode.939 最小面积矩形

题目链接 Leetcode.939 最小面积矩形 Rating &#xff1a; 1752 题目描述 给定在 xy平面上的一组点&#xff0c;确定由这些点组成的矩形的最小面积&#xff0c;其中矩形的边平行于 x 轴和 y 轴。 如果没有任何矩形&#xff0c;就返回 0。 示例 1&#xff1a; 输入&#xff1…...

Springboot项目快速实现过滤器功能

前言很多时候&#xff0c;当你以为掌握了事实真相的时间&#xff0c;如果你能再深入一点&#xff0c;你可能会发现另外一些真相。比如面向切面编程的最佳编程实践是AOP&#xff0c;AOP的主要作用就是可以定义切入点&#xff0c;并在切入点纵向织入一些额外的统一操作&#xff0…...

基于springboot的简历系统的实现

摘 要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;简历系统当然也不能排除在外。简历系统是以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&#xff0c;采用…...

Vue3中watch的用法

watch函数用于侦听某个值的变化&#xff0c;当该值发生改变后&#xff0c;触发对应的处理逻辑。 一、watch的基本实例 <template><div><div>{{ count }}</div><button click"changCount">更改count的值</button></div> …...

MS python学习(18)

学习Pandas.DataFrame(2) load csv(comma seperated variable) files to DataFrame and vice versa upload csv files read/write csv files load data into jupyter notebook, create a new folder and then upload the csv files into it. (CSV comma seperated variable)…...

java笔记

前言 以下是一名java初学者在自学过程中所整理的笔记&#xff0c;欢迎大家浏览并留言&#xff0c;若有错误的地方请大家指正。 java语言特性 简单性&#xff1a;相对于其他编程语言而言&#xff0c;java较为简单&#xff0c;例如&#xff1a;java不再支持多继承&#xff0c;C…...

对象的构造及初始化

目录 一、如何初始化对象 二、构造方法 1.概念 2.特性 三、默认初始化 四、就地初始化 总结 一、如何初始化对象 在Java方法内部定义一个局部变量的时候&#xff0c;我们知道必须要进行初始化。 public class Test4 {public static void main(String[] args) {//未初始化…...

Socket 读取数据

1. Socket 配置参数中添加 1.1 读取 Socket 字节时的字节序 1.2 读取数据时&#xff0c;单次读取最大缓存值 1.3 从 Socket 读取数据时&#xff0c;遵从的数据包结构协议 1.4 服务器返回数据的最大值&#xff0c;防止客户端内存溢出 /*** Description: Socket 配置参数*/public…...

小白的Git入门教程(一)

这是本人的git的入门过程仅供参考 先是在官网下载git版本下载链接&#xff0c;安装步骤可以搜索其他大神的文章然后就是创建一个属于你的git本地库首先是创建一个文件夹作为根目录&#xff0c;这里我创建了一个叫test_git文件夹紧接着便进去新建文件夹&#xff0c;点击这里的g…...

第一个Vue程序

第一个Vue程序 <body> <!--view层 变成了一个模板--> <div id"app">{{message}} </div><!--导入vue.js--> <script src"https://cdn.jsdelivr.net/npm/vue2.5.16/dist/vue.min.js"></script> <script>va…...

2023上学期学习计划

目前&#xff1a;根据答辩的情况来看&#xff0c;目前去项目组&#xff0c;着重写好算法是相对较优的打算&#xff0c;先将项目写好&#xff0c;之后着重提升算法水平&#xff0c;这学期主要啃《算法导论》与《大话数据结构》这俩本书&#xff0c;同时刷题量要达到160题 四月份…...

OpenClaw技能开发入门:为Qwen3-4B定制专属自动化模块

OpenClaw技能开发入门&#xff1a;为Qwen3-4B定制专属自动化模块 1. 为什么需要自定义OpenClaw技能 去年夏天&#xff0c;我接手了一个重复性极高的周报生成工作。每周都要从十几个PDF报告中提取关键数据&#xff0c;整理成固定格式的Excel表格&#xff0c;再转成PPT汇报。当…...

如何高效利用孔祥仁线性代数网课?我的实战笔记与技巧分享

如何高效利用孔祥仁线性代数网课&#xff1f;我的实战笔记与技巧分享 线性代数作为数学领域的重要分支&#xff0c;在计算机科学、物理学、工程学等多个学科中都有广泛应用。对于许多学生来说&#xff0c;这门课程既抽象又充满挑战。孔祥仁老师的线性代数网课以其"零废话&…...

OpenClaw性能对比测试:Qwen3-4B与Qwen3-32B模型任务执行效率

OpenClaw性能对比测试&#xff1a;Qwen3-4B与Qwen3-32B模型任务执行效率 1. 测试背景与目标 最近在本地部署OpenClaw时遇到了一个实际选择难题&#xff1a;作为个人开发者&#xff0c;到底该选择Qwen3-4B这样的轻量模型&#xff0c;还是直接上Qwen3-32B这样的"大家伙&qu…...

如何用UAV-Flow实现语音控制无人机?手把手教你搭建环境与避坑指南

如何用UAV-Flow实现语音控制无人机&#xff1f;从环境搭建到实战避坑全指南 当无人机遇上自然语言处理&#xff0c;会擦出怎样的火花&#xff1f;去年接触UAV-Flow时&#xff0c;我正为一个农业巡检项目头疼——传统摇杆控制需要专业飞手&#xff0c;而农户们更习惯说"绕着…...

Buzz:离线环境下音频转录与翻译的完整解决方案

Buzz&#xff1a;离线环境下音频转录与翻译的完整解决方案 【免费下载链接】buzz Buzz transcribes and translates audio offline on your personal computer. Powered by OpenAIs Whisper. 项目地址: https://gitcode.com/GitHub_Trending/buz/buzz 在当今信息驱动的工…...

如何轻松获取网页媒体资源?猫抓开源工具让资源提取效率提升3倍

如何轻松获取网页媒体资源&#xff1f;猫抓开源工具让资源提取效率提升3倍 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否曾在浏览网页时遇…...

终极免费指南:让macOS视频预览功能瞬间强大的秘密武器

终极免费指南&#xff1a;让macOS视频预览功能瞬间强大的秘密武器 【免费下载链接】QuickLookVideo This package allows macOS Finder to display thumbnails, static QuickLook previews, cover art and metadata for most types of video files. 项目地址: https://gitcod…...

个人 AI 助理——打造你的第二大脑

个人 AI 助理——打造你的第二大脑摘要&#xff1a;信息过载时代&#xff0c;个人 AI 助理不再是奢侈品&#xff0c;而是必需品。本文教你如何搭建专属 AI 助理&#xff0c;实现信息管理、知识沉淀、决策辅助的智能化&#xff0c;让 AI 成为你的"第二大脑"。一、为什…...

忍者像素绘卷效果对比:亮色像素美学 vs 传统暗调像素艺术表现力

忍者像素绘卷效果对比&#xff1a;亮色像素美学 vs 传统暗调像素艺术表现力 1. 作品概述 忍者像素绘卷是一款基于Z-Image-Turbo深度优化的图像生成工作站&#xff0c;它将忍者文化与16-Bit复古游戏美学完美融合。这款工具最显著的特点是采用了全新的"亮色像素"界面…...

基于MATLAB的用于分析弧齿锥齿轮啮合轨迹的程序已调通,可直接运行并输出齿轮啮合轨迹及传递误差

158.基于matlab的用于分析弧齿锥齿轮啮合轨迹的输出齿轮啮合轨迹及传递误差程序已调通&#xff0c;可直接运行 1. 程序概述 本程序包实现了一套完整的弧齿锥齿轮齿面接触分析&#xff08;TCA&#xff09; 系统&#xff0c;主要用于分析大轮凸面与小轮凹面的啮合特性。程序由刘…...