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

Spring Boot 优雅配置yml配置文件定义集合、数组和Map

一、@value 获取配置文件

在平时的yml配置文件中,我们经常使用到配置基本数据类型的字符串,比如配置日志文件的写法如下:

# 配置日志输出级别
logging:# 指定logback配置文件的位置 config: classpath:logback-spring.xml# 文件日志要输出的路径path: E:/logs/springboot_server# 日志的输出级别level:root: info

获取属性值的话可以通过@value 注解来实现,如下:

@Value("${logging.path}")
private String path;    // 获取日志文件的输出路径

二、 List集合获取配置文件

第一种方法

# 拦截器路径拦截或者不拦截配置
interceptorconfig:path:#该路径下任何类型请求均拦截include:- /api/v1/token/api_token- /api/v1/yibaotong/save

第二种方法

# 拦截器路径拦截或者不拦截配置
interceptorconfig:path:#该路径下任何类型请求均拦截include: [/api/v1/token/api_token,/api/v1/yibaotong/save]

总结

这里需要注意的是,定义List集合不能用@value 注解来获取List集合的所有值,需要定义一个配置类bean,然后使用 @ConfigurationProperties 注解来获取list集合值,做法如下:

@Data
@Component
@ConfigurationProperties(prefix = "interceptorconfig.path") // 配置文件的前缀
public class InterceptorPathBean
{/** 需要拦截的路径*/private List<String> include;
}

三、定义对象list集合获取配置文件

单个对象List

首先创建一个user对象如下:

@Data
public class User implements Serializable
{  private static final long serialVersionUID = 1L;private String appId;private String password;}

然后yml配置文件的写法如下:

jwt:userlist:- appId: YiBaoTongpassword: 123456- appId: ZhiKepassword: 123456

定义配置bean使用@ConfigurationProperties注解获取对象集合值:

@Data
@Component
@ConfigurationProperties(prefix = "jwt") // 配置 文件的前缀
public class JwtConfigBean
{/*** 用户列表*/private List<User> userlist;
}

List对象中包含List

定义配置bean使用@ConfigurationProperties注解获取对象集合值:

@Data
@Component
@ConfigurationProperties(prefix = "jwt") // 配置 文件的前缀
public class JwtConfigBean {/*** 用户列表*/private List<UserTest> userList;@Dataprivate static class UserTest {private String appId;private List<String> passwordList;}}

yml 文件配置

jwt:userList:- appId: '121212'passwordList: '活动时间流程节点-PromoTimeValidNode,活动时间流程节点-PromoTimeValidNode2'- appId: 'werw3313'passwordList: '活动时间流程节点-PromoTimeValidNode,活动时间流程节点-PromoTimeValidNode2'

四、数组获取配置文件

yaml 格式如下:

interceptorconfig:path:includes: /api/v1,/api/v2  #注意要用逗号分隔开

可以通过@value注解获取数组值,如下:

@Value("${interceptorconfig.path.includes}")
private String[] includes;

也可以通过创建配置类bean,使用@ConfigurationProperties注解获取,如下:

@Data
@Component
@ConfigurationProperties(prefix = "interceptorconfig.path") // 配置 文件的前缀
public class InterceptorPathBean
{  private String[] includes;
}

五、定义Map集合配置文件

yaml 格式如下:

interceptorconfig:path:maps: {name: 小明,age: 24}

或者写成:

interceptorconfig:path:maps:name: 小明age: 24

通过创建配置类bean,使用@ConfigurationProperties注解获取map值,如下:

@Data
@Component
@ConfigurationProperties(prefix = "interceptorconfig.path") // 配置 文件的前缀
public class InterceptorPathBean
{private Map<String , String> maps;
}

以上就是Spring Boot yml配置文件定义基本数据类型和引用数据类型的方式;

六、参考链接

spring boot 的yml配置文件定义list集合、数组和map以及使用中出现的错误_yml配置map类型的数据注入失败-CSDN博客

相关文章:

Spring Boot 优雅配置yml配置文件定义集合、数组和Map

一、value 获取配置文件 在平时的yml配置文件中&#xff0c;我们经常使用到配置基本数据类型的字符串&#xff0c;比如配置日志文件的写法如下&#xff1a; # 配置日志输出级别 logging:# 指定logback配置文件的位置 config: classpath:logback-spring.xml# 文件日志要输出的路…...

java+springboot+vue开发的大学生健康检测小程序

主要功能测试身体健康指数&#xff0c;添加病历&#xff0c;添加日历清单等&#xff0c;管理员导出学生健康电子档案表等。前端小城程序&#xff0c;后端管理员vue开发&#xff0c;接口Java springboot开发。 小程序演示视频 https://www.bilibili.com/video/BV1Kc411d7bb/?s…...

从零开始的LINUX(四)

1.yum&#xff1a; 功能&#xff1a;软件包管理器&#xff0c;功能类似与手机上的应用商店。通过yum可以获取指令的下载地址&#xff0c;然后一键式安装指令。由于yum中的地址一般都是外网的&#xff0c;所以需要镜像源&#xff08;即国内的下载地址&#xff09;。 相关指令&…...

组播应用层收不到问题-接收网卡绑定

问题背景&#xff1a; 平台&#xff1a;Android 设备A&#xff1a;组播发送者&#xff0c;发送组播数据 设备B&#xff1a;组播接受者&#xff0c;接收组播数据 设备A与设备B通过有线连接&#xff0c;连接在设备B的eth0网卡上 问题&#xff1a; 设备B在没有通讯模块网卡的情况…...

回流重绘零负担,网页加载快如闪电

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 ⭐ 专栏简介 &#x1f4d8; 文章引言 一、回…...

QT5.15在Ubuntu22.04上编译流程

在我们日常遇到的很多第三方软件中&#xff0c;有部分软件针对开发人员&#xff0c;并不提供预编译成果物&#xff0c;而是需要开发人员自行编译&#xff0c;此类问题有时候不是问题&#xff08;编译步骤的doc详细且清晰时&#xff09;&#xff0c;但有时候又很棘手&#xff08…...

【电路笔记】-交流波形和交流电路理论

交流波形和交流电路理论 文章目录 交流波形和交流电路理论1、概述2、交流发电2.1 涡轮发电2.2 变压器 3、交流功率3.1 RMS值3.2 功率分配 4、总结 当谈论电流或电压时&#xff0c;这些信号可以分为两大类&#xff1a;直流和交流。 DC 状态为“直流电”&#xff0c;该定义重新组…...

vue2 系列:自定义 v-model

1. input 中的 v-model <!-- 表单双向绑定 --> <input :value"username" input"username $event.target.value" /> <!-- 等于 --> <input v-model"username" /> 2. 自定义组件 v-model <!-- 组件双向绑定 -->…...

广东木模板批发,建筑桥梁工程专用组合木模板

作为广东地区的木模板批发商&#xff0c;我们致力于为建筑行业提供高品质的木模板产品。在众多产品中&#xff0c;我们特别推荐我们的建筑桥梁工程专用组合木模板&#xff0c;为桥梁工程提供卓越的支持和出色的性能。 我们的组合木模板是专为桥梁工程设计的&#xff0c;以满足对…...

工业相机常见的工作模式、触发方式

参考&#xff1a;机器视觉——工业相机的触发应用(1) - 知乎 工业相机常见的工作模式一般分为&#xff1a; 触发模式连续模式同步模式授时同步模式 触发模式&#xff1a;相机收到外部的触发命令后&#xff0c;开始按照约定时长进行曝光&#xff0c;曝光结束后输出一帧图像。…...

【C语言】指针那些事(上)

C语言系列 文章目录 文章目录 一. 字符指针 一.&#xff08;1 &#xff09; 数组创建空间的地址和指针指向的地址 二. 指针数组 二.&#xff08;1&#xff09;指针数组模拟一个二维数组 ​ 三. 数组指针 三.(1)数组指针到底有什么用 对一维数组没有什么用 二.(…...

liunx Centos-7.5上 rabbitmq安装

在安装rabbitmq中需要注意&#xff1a; 1、rabbitmq依赖于erlang&#xff0c;需要先安装erlang 2、erlang和rabbitmq版本有对应关系 可参考网页&#xff1a;https://www.rabbitmq.com/which-erlang.html 第一步&#xff0c;安装编译工具及库文件,如果服务器上已经有了&…...

蓝桥杯学长经验笔记

平台&#xff1a;立扣&#xff0c;牛客网&#xff0c;蓝桥云课 &#xff0c;codeforce刷题时间&#xff1a;刷题时间&#xff1a; 每天&#xff1a;有课一个多小时 周末 3-4 小时&#xff1a;学一部分做一点题书&#xff1a;《算法竞赛从入门到进阶》、《算法笔记》、《算法竞赛…...

开发库介绍

一、开发库选择 1.1 概述 STM32开发相关的库有很多&#xff0c;它们都是为了方便开发者使用STM32微控制器而提供的软件工具。根据不同的功能和层次&#xff0c;可以将它们分为以下几类&#xff1a; CMSIS库&#xff08;Cortex Microcontroller Software Interface Standard&am…...

基于单片机的智能清洁小车设计—控制系统设计

收藏和点赞&#xff0c;您的关注是我创作的动力 文章目录 概要 一、研究的主要内容和目标二、总体方案设计2.1智能清洁小车的硬件系统组成2.2智能清洁小车的硬件结构图 三、 小车结构设计5.1基本布局和功能分析5.2小车二维及三维图小车三维图&#xff1a; 四、 原理图程序 五、…...

玩转视图变量,轻松实现动态可视化数据分析

前言 在当今数据驱动的世界中&#xff0c;数据分析已经成为了企业和组织中不可或缺的一部分。传统的静态数据分析方法往往无法满足快速变化的业务需求和实时决策的要求。为了更好地应对这些挑战&#xff0c;观测云的动态可视化数据分析应运而生。 在动态可视化数据分析中&…...

【51单片机】:智能施工电梯系统

项目效果&#xff1a; 基于51单片机的智能施工电梯系统 摘 要 智能施工电梯系统目前广泛应用于人们建筑工程中&#xff0c;为人们施工时上下搬运提供了极大的便利。智能施工电梯系统包括密码开启、超重提示&#xff0c;电梯运作及相关信息显示等等功能&#xff0c;施工电梯为我…...

前端线上部署,如何通知用户有新版本

前言 version-polling 是一个轻量级的 JavaScript 库&#xff0c;它可以实时检测 web 应用的 index.html 文件内容是否有变化。当服务端发布新版本后&#xff0c;前端会自动弹出更新提示&#xff0c;让用户刷新页面&#xff0c;以加载最新的资源和功能。这样可以提高用户体验和…...

Debezium日常分享系列之:Debezium2.4版本之用于 MongoDB的Debezium 连接器

Debezium日常分享系列之&#xff1a;Debezium2.4版本之用于 MongoDB的Debezium 连接器 一、综述二、改变流三、阅读偏好四、MongoDB 连接器的工作原理五、支持的 MongoDB 拓扑六、所需的用户权限七、逻辑连接器名称八、执行快照九、临时快照十、增量快照1.增量快照流程2.Debezi…...

编程应用场景:便利店商超进销存管理系统软件,试用版可以免费试用下载

编程应用场景&#xff1a;便利店商超进销存管理系统软件&#xff0c;试用版可以免费试用下载 软件特色&#xff1a; 1、功能实用&#xff0c;操作简单&#xff0c;不会电脑也会操作&#xff0c;软件免安装&#xff0c;已内置数据库。软件在关闭的时候&#xff0c;可以设置会员…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

React Native 导航系统实战(React Navigation)

导航系统实战&#xff08;React Navigation&#xff09; React Navigation 是 React Native 应用中最常用的导航库之一&#xff0c;它提供了多种导航模式&#xff0c;如堆栈导航&#xff08;Stack Navigator&#xff09;、标签导航&#xff08;Tab Navigator&#xff09;和抽屉…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲&#xff1a; 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年&#xff0c;数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段&#xff0c;基于数字孪生的水厂可视化平台的…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...