Java 读取树状结构的.yaml文件

1. 编写yaml配置文件

以省市乡三级结构为例,配置文件如下:

administrative:divisions:- code: BJname: 北京children:- code: BJ01name: 东城区children:- code: BJ0101name: 东华门街道- code: BJ0102name: 交道口街道- code: BJ0103name: 和平里街道- code: BJ02name: 西城区children:- code: BJ0201name: 西长安街街道- code: BJ0202name: 新街口街道- code: BJ0203name: 月坛街道- code: SHname: 上海children:- code: SH01name: 黄浦区children:- code: SH0101name: 南京东路街道- code: SH0102name: 外滩街道- code: SH0103name: 半淞园路街道- code: SH02name: 徐汇区children:- code: SH0201name: 天平路街道- code: SH0202name: 徐家汇街道- code: SH0203name: 斜土街道

2. 创建实体类

import lombok.Data;
import com.sun.istack.internal.NotNull;
import org.springframework.validation.annotation.Validated;import java.util.List;@Validated
@Data
public class AdministrativeDivision {private final String code;private final String name;private final List<AdministrativeDivision> children;public AdministrativeDivision(@NotNull String code, @NotNull String name, List<AdministrativeDivision> children) {this.code = code;this.name = name;this.children = children;}
}

3. 创建配置类读取配置文件

import com.zjp.demo.pojo.AdministrativeDivision;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.ConstructorBinding;import java.util.List;@ConfigurationProperties(prefix = "administrative")
@ConstructorBinding
public class AdministrativeDivisionsConfig {private final List<AdministrativeDivision> divisions;public AdministrativeDivisionsConfig(List<AdministrativeDivision> divisions) {this.divisions = divisions;}public List<AdministrativeDivision> getDivisions() {return divisions;}
}

4. 在启动类加 @EnableConfigurationProperties 注解

@SpringBootApplication
@EnableConfigurationProperties(AdministrativeDivisionsConfig.class)
public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}
}

5. 测试

import com.zjp.demo.config.AdministrativeDivisionsConfig;
import com.zjp.demo.pojo.AdministrativeDivision;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;import java.util.List;@Slf4j
@SpringBootTest
class AaDemoApplicationTests {@AutowiredAdministrativeDivisionsConfig administrativeDivisionsConfig;@Testpublic void test1() {List<AdministrativeDivision> divisions = administrativeDivisionsConfig.getDivisions();System.out.println(divisions);}
}

输出结果为:

[AdministrativeDivision(code=BJ, name=北京, children=[AdministrativeDivision(code=BJ01, name=东城区, children=[AdministrativeDivision(code=BJ0101, name=东华门街道, children=null), AdministrativeDivision(code=BJ0102, name=交道口街道, children=null), AdministrativeDivision(code=BJ0103, name=和平里街道, children=null)]), AdministrativeDivision(code=BJ02, name=西城区, children=[AdministrativeDivision(code=BJ0201, name=西长安街街道, children=null), AdministrativeDivision(code=BJ0202, name=新街口街道, children=null), AdministrativeDivision(code=BJ0203, name=月坛街道, children=null)])]), AdministrativeDivision(code=SH, name=上海, children=[AdministrativeDivision(code=SH01, name=黄浦区, children=[AdministrativeDivision(code=SH0101, name=南京东路街道, children=null), AdministrativeDivision(code=SH0102, name=外滩街道, children=null), AdministrativeDivision(code=SH0103, name=半淞园路街道, children=null)]), AdministrativeDivision(code=SH02, name=徐汇区, children=[AdministrativeDivision(code=SH0201, name=天平路街道, children=null), AdministrativeDivision(code=SH0202, name=徐家汇街道, children=null), AdministrativeDivision(code=SH0203, name=斜土街道, children=null)])])]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/49073.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【区块链+绿色低碳】巴中市生态价值核算创新应用 | FISCO BCOS应用案例

生态产品总值&#xff08;GEP&#xff09;&#xff0c;指一定区域生态系统为人类福祉和经济社会可持续发展提供的产品与服务价值总和&#xff0c;包 括供给产品价值、调节服务价值和文化服务价值。当前&#xff0c;推动生态产品价值有效转化存在“难度量、难抵押、难交易、 难变…

【手撕数据结构】拿捏单链表

目录 单链表介绍链表的初始化打印链表增加节点尾插头插再给定位置之后插入在给定位置之前插入 删除节点尾删头删删除给定位置的节点删除给定位置之后的节点 查找节点 单链表介绍 单链表也叫做无头单向非循环链表&#xff0c;链表也是一种线性结构。他在逻辑结构上一定连续&…

(Qt) 文件读写基础

文章目录 &#x1f5c2;️前言&#x1f4c4;ref&#x1f4c4;访问标记&#x1f5c3;️enum 标记 &#x1f5c2;️Code&#x1f4c4;demo&#x1f4c4;分点讲解&#x1f5c3;️继承体系&#x1f5c3;️打开/关闭&#x1f5c3;️写&#x1f5c3;️读 &#x1f5c2;️END&#x1f…

从零开始:构建基于深度学习的实时跌倒检测系统(UI界面+YOLO代码+数据集)

注意看文末的结局与声明 一、引言 1. 项目背景与动机 在老年人和高危职业环境中&#xff0c;跌倒是一种常见的事故&#xff0c;可能导致严重的伤害甚至致命。实时跌倒检测系统可以及时发现并报警&#xff0c;提供紧急救助。通过深度学习技术&#xff0c;可以提高跌倒检测的准…

Android14 - 前台Service、图片选择器 、OpenJDK 17、其他适配

前台服务 1. 指定前台服务类型 以 Android 14(API 级别 34)或更高版本为目标平台的应用,需要为应用中的每项前台服务指定服务类型,因为系统需要特定类型的前台服务满足特定用例。具体介绍如下: 在Android 10 在 <service> 元素内引入了 android:foregroundServiceT…

Java并发的笔记

打算记录自己的学习情况&#xff0c;尽量不摆烂&#xff0c;另外一件事要有始有终&#xff0c;要弄完 如果多个线程处理同一个变量&#xff0c;读跟写都保证不了 2024.7.22》》》》》》》》》》》》 2.1.1volatile的实现原理 volatile不会引起线程上下文的切换和调度 一致性更…

pycharm+pyqt6配置

1、pip install pyqt6 pyqt6-toools 2、pycharm配置 配置&#xff1a;designer Program&#xff1a;&#xff1a;D:\Python39\Lib\site-packages\qt6_applications\Qt\bin\designer.exe Working directory: $ProjectFileDir$ 配置&#xff1a;pyuic6.exe Program&#xff1a…

调度子系统在特定时间执行

时序逻辑调度器设计模式允许您安排Simulink子系统在指定时间执行。以下模型说明了这种设计模式。 时序逻辑调度器图表包含以下逻辑&#xff1a; 时序逻辑调度器的关键行为 时序逻辑调度器图表包含两个状态&#xff0c;它们以不同的速率调度函数调用子系统A1、A2和A3的执行&…

DVWA靶场超(详细教程)--跨站攻击(XSS+CSRF)

一、XSS 反射型xss 打开dvwa的Reflected Cross Site Scripting (XSS) &#xff08;1&#xff09;low等级 查看页面源码&#xff08;ctrlu&#xff09;该界面有提交按钮和输入框 在输入框随便输入点字符&#xff0c;点击提交 可以看见输入的helloword嵌入到界面中。 View sou…

PS启动提示Adobe Creative Cloud丢失或损坏。您可以尝试修复来解决这个问题,如何解决

一般为找到这个路径下C:\Program Files (x86)\Common Files\Adobe\Adobe Desktop Common\ADS的Adobe Desktop Service.exe文件。如果不在C盘也可以直接搜索其他盘找到此文件。 直接删除此文件即可解决&#xff0c;如果删除不了可以进任务管理器先结束进程再删除。鼠标右键结束任…

DolphinScheduler安装教程

DolphinScheduler安装教程 前期准备工作 jdk 1.8mysql 5zookeeper 3.4.6hadoop 2.6psmisc yum -y install psmisc 解压安装包 # 将安装包apache-dolphinscheduler-2.0.8-bin.tar.gz放置/opt/download目录下 # 解压缩 tar -zxvf apache-dolphinscheduler-2.0.8-bin.tar.gz -C …

看准JS逆向案例:webpack逆向解析

&#x1f50d; 逆向思路与步骤 抓包分析与参数定位 首先&#xff0c;我们通过抓包工具对看准网的请求进行分析。 发现请求中包含加密的参数b和kiv。 为了分析这些加密参数&#xff0c;我们需要进一步定位JS加密代码的位置。 扣取JS加密代码 定位到JS代码中的加密实现后&a…

学习java第一百三十八天

Bean的作用域 1、singleton&#xff1a;单例&#xff0c;Spring中的bean默认都是单例的。 2、prototype&#xff1a;每次请求都会创建一个新的bean实例。 3、request&#xff1a;每一次HTTP请求都会产生一个新的bean&#xff0c;该bean仅在当前HTTP request内有效。 4、session…

PGSQL学习-基础表结构

1 访问数据库 创建好数据库后&#xff0c;你可以有三种方式访问数据库 运行PostgreSQL的交互式终端程序&#xff0c;它被称为psql&#xff0c; 它允许你交互地输入、编辑和执行SQL命令。 使用一种已有的图形化前端工具&#xff0c;比如pgAdmin或者带ODBC或JDBC支持的办公套件…

leetcode4 -- 寻找两个正序数组的中位数

题目描述&#xff1a; 给定两个大小分别为 m 和 n 的正序&#xff08;从小到大&#xff09;数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 算法的时间复杂度应该为 O(log (mn)) 。 示例 1&#xff1a; 输入&#xff1a;nums1 [1,3], nums2 [2] 输出&…

GPU驱动、CUDA 、cuDNN 和CUDA Toolkit之间的关系(深度学习小白必懂)

GPU驱动、CUDA、cuDNN和CUDA Toolkit之间有着紧密的关系&#xff0c;它们共同构成了一个完整的GPU编程和深度学习开发环境。 在最初配置anaconda环境时一直搞不明白它们之间的关系。所以根据自己的理解&#xff0c;通俗详细解释它们各自的角色和相互间的关系&#xff0c;并且列…

前端面试 vue 接口权限控制

接口权限目前一般采用jwt的形式来验证&#xff0c;没有通过的话一般返回401&#xff0c;跳转到登录页面重新进行登录 对于 jwt的理解 &#xff08;前端接口权限的控制主要通过接口权限配置和JWT&#xff08;‌Json Web Token&#xff09;‌技术来实现。‌ 首先&#xff0c;‌…

前端设计模式面试题汇总

面试题 1. 简述对网站重构的理解&#xff1f; 参考回答&#xff1a; 网站重构&#xff1a;在不改变外部行为的前提下&#xff0c;简化结构、添加可读性&#xff0c;而在网站前端保持一致的行为。也就是说是在不改变UI的情况下&#xff0c;对网站进行优化&#xff0c; 在扩展的…

红人点集登录逆向+接口逆向:SHA256算法和Webpack反爬

&#x1f50d; 引言 红人点集采取了一系列加密和限制措施&#xff0c;主要是对于参数加密和登录token加密。今天利用Python与JavaScript逆向工程技术&#xff0c;实现逆向登录然后请求接口获取数据。 &#x1f50d; 思路与步骤详解 &#x1f527; 解密登录接口参数&#xf…

【k8s故障处理篇】calico-kube-controllers状态为“ImagePullBackOff”解决办法

【k8s故障处理篇】calico-kube-controllers状态为“ImagePullBackOff”解决办法 一、环境介绍1.1 本次环境规划1.2 kubernetes简介1.3 kubernetes特点二、本次实践介绍2.1 本次实践介绍2.2 报错场景三、查看报错日志3.1 查看pod描述信息3.2 查看pod日志四、报错分析五、故障处理…