重学SpringBoot3-yaml文件配置
重学SpringBoot3-yaml文件配置
- 引言
- YAML 基本语法
- YAML 数据类型
- YAML 对象
- YAML 数组
- 复合结构
- 标量
- 引用
- YAML 文件结构
- Spring Boot 中的 YAML 配置
- 注意事项
- 总结
- 参考
引言
YAML(YAML Ain’t Markup Language)是一种常用于配置文件的数据序列化格式,因其易于阅读和书写而广受欢迎。在 Spring Boot 应用中,YAML 文件通常用于替代传统的 properties 文件,用于配置应用的各种参数。本教程将引导你了解 YAML 文件的基本写法和在 Spring Boot 中的应用。
YAML 的配置文件后缀为 .yml 或 .yaml,如:app.yml。
YAML 基本语法
YAML 的设计目标是易于阅读和书写,其主要元素包括:
- 缩进:YAML 使用缩进表示层级关系,通常使用两个空格作为缩进级别,不推荐使用 Tab 键。
- 键值对:使用冒号加空格分隔键和值。
- 列表:使用短横线
-表示列表项。 - 注释:使用井号
#开头标记注释。 - 大小写敏感:建议使用串式命名法(短横线-)代替驼峰,即使用
device-type代替deviceType。
YAML 数据类型
YAML 支持以下几种数据类型:
- 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary);
- 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list);
- 标量(scalars):单个的、不可再分的值;
YAML 对象
- 对象键值对使用冒号结构表示 key: value,(注意:冒号后面要加一个空格)。
- 也可以使用 key:{key1: value1, key2: value2, …}。
- 还可以使用缩进表示层级关系。
示例:
key: child-key: valuechild-key2: value2

较为复杂的对象格式,可以使用问号加一个空格代表一个复杂的 key,配合一个冒号加一个空格代表一个 value:
? - k1- k2- k3
:- v1- v2- v3

YAML 数组
以"-"开头的行表示构成一个数组(注意:-后面有一个空格):
- A
- B
- C

YAML数组也可以使用行内表示:
key: [value1, value2, ...]

数据子成员是一个数组(注意缩减一个空格):
-- A- B- C

数据子成员是一个对象数组:
list:-id: 1name: n1-id: 2name: n2

意思是 list 属性是一个对象数组,每一个数组元素又是由 id、name 两个属性构成。
数组也可以使用流式(flow )的方式表示:

复合结构
数组和对象可以构成复合结构,例:
YAML Resources:YAML Specifications:- YAML 1.2:- Revision 1.2.2 # Oct 1, 2021 *New*- Revision 1.2.1 # Oct 1, 2009- Revision 1.2.0 # Jul 21, 2009- YAML 1.1- YAML 1.0YAML Matrix Chat: '#chat:yaml.io' # Our New Group Chat Room!YAML IRC Channel: libera.chat#yaml # The old chat

标量
纯量是最基本的,不可再分的值,包括:
- 字符串
- 布尔值
- 整数
- 浮点数
- Null
- 时间
- 日期
使用一个例子来快速了解标里可以使用哪些表示形式:
boolean: - TRUE #true,True都可以- FALSE #false,False都可以
float:- 3.14- 6.8523015e+5 #可以使用科学计数法
int:- 123- 0b1010_0111_0100_1010_1110 #二进制表示
null:nodeName: 'node'parent: ~ #使用~表示null
string:- 哈哈- 'Hello world' #可以使用双引号或者单引号包裹特殊字符- newlinenewline2 #字符串可以拆成多行,每一行会被转化成一个空格
date:- 2018-02-17 #日期必须使用ISO 8601格式,即yyyy-MM-dd
datetime: - 2018-02-17T15:02:31+08:00 #时间使用ISO 8601格式,时间和日期之间使用T连接,最后使用+代表时区

引用
“&”锚点和“*****”别名,可以用来引用(相当于定义变量和使用变量):
- &V1 java
- C
- C++
- *V1

再看一个复杂的例子:
defaults: &defaultsadapter: postgreshost: localhostdevelopment:database: myapp_development<<: *defaultstest:database: myapp_test<<: *defaults

& 用来建立锚点(defaults),<< 表示合并到当前数据,* 用来引用锚点。
YAML 文件结构
以下是一个简单的 YAML 配置文件示例:
server:port: 8080context-path: /apispring:datasource:url: jdbc:mysql://localhost:3306/mydbusername: userpassword: passjpa:hibernate:ddl-auto: updateshow-sql: truemyapp:feature:enabled: truesecurity:level: high
在这个例子中:
-
server,spring,myapp是顶级配置项。 -
使用缩进表示层级结构,例如
datasource是spring下的子项。 -
列表可以表示为:
myapp:roles:- admin- user- guest
Spring Boot 中的 YAML 配置
在 Spring Boot 应用中,YAML 文件通常命名为 application.yml,放置在 src/main/resources 目录下。Spring Boot 会自动加载这个文件并将其属性绑定到 Spring 环境中。
示例:配置数据库连接
spring:datasource:url: jdbc:mysql://localhost:3306/mydbusername: dbuserpassword: dbpassdriver-class-name: com.mysql.cj.jdbc.Driver
示例:配置多环境
你可以为不同的环境定义不同的配置文件,如 application-dev.yml, application-test.yml, application-prod.yml,并在主配置文件中指定活跃的配置文件:
spring:profiles:active: dev
注意事项
-
确保正确使用缩进,因为错误的缩进会导致配置无法正确解析。
-
避免在 YAML 文件中使用 Tab 键,这可能导致解析错误。
-
注意字符串中特殊字符的处理,必要时可以使用双引号或单引号。
- 单引号不会转义【\n 则为普通字符串显示】
- 双引号会转义【\n会显示为换行符】
-
大文本
-
|开头,大文本写在下层,保留文本格式,换行符正确显示>开头,大文本写在下层,折叠换行符
-
多文档合并
-
- 使用
---可以把多个yaml文档合并在一个文档中,每个文档区依然认为内容独立
- 使用
总结
YAML 提供了一种更为人性化的配置文件格式,它通过简洁的结构化格式,使得配置信息更加易于理解和维护。在 Spring Boot 中,通过使用 YAML,开发者可以轻松地管理和切换不同环境下的配置,优化开发流程。掌握 YAML 的基本写法和在 Spring Boot 中的应用,将有助于提高你的开发效率。
参考
YAML 入门教程 | 菜鸟教程
YAML 备忘清单
相关文章:
重学SpringBoot3-yaml文件配置
重学SpringBoot3-yaml文件配置 引言YAML 基本语法YAML 数据类型YAML 对象YAML 数组复合结构标量引用 YAML 文件结构Spring Boot 中的 YAML 配置注意事项总结参考 引言 YAML(YAML Ain’t Markup Language)是一种常用于配置文件的数据序列化格式ÿ…...
【管理咨询宝藏资料33】某头部咨询公司组织效能提升模型方案
本报告首发于公号“管理咨询宝藏”,如需阅读完整版报告内容,请查阅公号“管理咨询宝藏”。 【管理咨询宝藏资料33】某头部咨询公司组织效能提升模型方案 【关键词】战略规划、组织效能、管理咨询 【文件核心观点】 - 通过长期行业积累和市场洞察&#…...
特征值和特征向量及其在机器学习中的应用
特征值和特征向量是线性代数中的概念,用于分析和理解线性变换,特别是由方阵表示的线性变换。它们被用于许多不同的数学领域,包括机器学习和人工智能。 在机器学习中,特征值和特征向量用于表示数据、对数据执行操作以及训练机器学…...
【Vue3】Ref 和 ShallowRef 的区别
这里写自定义目录标题 什么是 Ref什么是 ShallowRef区别对比示例代码 什么是 Ref Ref 是 Vue 3 中的一个新的基本响应式数据类型,它允许我们包装任意的 JavaScript 值,并且在数据变化时发出通知。Ref 提供了一个 .value 属性来访问其内部的值࿰…...
Linux - 进程概念
1、冯诺依曼体系结构 我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系; 截至目前,我们所认识的计算机,都是有一个个的硬件组件组成: 输入单元:…...
H5小游戏,象棋
H5小游戏源码、JS开发网页小游戏开源源码大合集。无需运行环境,解压后浏览器直接打开。有需要的,私信本人,发演示地址,可以后再订阅,发源码,含60+小游戏源码。如五子棋、象棋、植物大战僵尸、开心消消乐、扑鱼达人、飞机大战等等 <!DOCTYPE html PUBLIC "-//W3C/…...
LLM春招准备(1)
llm排序 GPT4V GPT-4V可以很好地理解直接绘制在图像上的视觉指示。它可以直接识别叠加在图像上的不同类型的视觉标记作为指针,例如圆形、方框和手绘(见下图)。虽然GPT-4V能够直接理解坐标,但相比于仅文本坐标,GPT-4V在…...
网络安全知识点总结
1、常见的网络攻击有哪些? 答:(1)口令攻击:也就是窃取用户的账户和密码,普通用户习惯于设置简单的密码,且多个系统用同一套密码,黑客可以使用字典攻击(常用密码库&#…...
服务完善的智能组网系统?
智能组网是现代信息技术的重要组成部分,它通过将各种设备和计算机连接起来,实现高效的数据传输和远程通信。在一个全球化、高度互联的时代背景下,智能组网已经成为了各行各业的必需品。传统的组网方案往往面临着许多问题和挑战。为了解决这些…...
VS2022如何添加行号?(VS2022不显示行号解决方法)
VS2022不显示行号解决方法 VS2022是非常好用的工具,很多同学在初学C/C的时候,都会安装,默认安装好VS2022后,写代码时,在编辑框的窗口左边就有显示行号,如下图所示: 但是有些同学安装好后&#…...
125.验证回文字符串
如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。 字母和数字都属于字母数字字符。 给你一个字符串 s,如果它是 回文串 ,返回 true ;否则&#…...
Spring Boot的启动流程(个人总结,仅供参考)
SpringBoot应用程序的启动流程主要包括初始化SpringApplication和运行SpringApplication两个过程。 1.初始化SpringApplication包括配置基本的环境变量、资源、构造器和监听器,初始化阶段的主要作用是为运行SpringApplication实例对象启动环境变量准备以及进行必要的…...
用BIO实现tomcat
一、前言 本课程的难度较高,需要将Servlet原理和IO课程全部学完。 二、当前项目使用方式 (1).自定义servlet 自定义servlet需要实现WebServlet并且实现name和urlMapping 重启进行访问 http://localhost:8090/myServlet (2).自定义html 重启进行访问 http://loc…...
JS逆向进阶篇【去哪儿旅行登录】【下篇-逆向Bella参数JS加密逻辑Python生成】
目录: 每篇前言:引子——本篇目的1、 代码混淆和还原(1)单独替换:(2)整个js文件替换: 2、算法入口分析3、 深入分析(0)整体分析:(1&am…...
【机器学习】生成对抗网络GAN
概述 生成对抗网络(Generative Adversarial Network,GAN)是一种深度学习模型架构,由生成器(Generator)和判别器(Discriminator)两部分组成,旨在通过对抗训练的方式生成逼…...
centos7安装kafka、zookeeper
安装jdk 安装jdk8 安装zookeeper 在指定目录执行下载命令 我是在/newdisk/zookeeper目录下 wget https://archive.apache.org/dist/zookeeper/zookeeper-3.5.8/apache-zookeeper-3.5.8-bin.tar.gz --no-check-certificate下载好后并解压 tar -zxvf apache-zookeeper-3.5…...
基于 STM32U5 片内温度传感器正确测算温度
目录预览 1、引言 2、问题 3、小结 01 引言 STM32 在内部都集成了一个温度传感器,STM32U5 也不例外。这个位于晶圆上的温度传感器虽然不太适合用来测量外部环境的温度,但是用于监控晶圆上的温度还是挺好的,以防止芯片过温运行。 02 问题…...
【比较mybatis、lazy、sqltoy、mybatis-flex、easy-query操作数据】操作批量新增、分页查询(三)
orm框架使用性能比较 比较mybatis、lazy、sqltoy、mybatis-flex、easy-query操作数据 环境: idea jdk17 spring boot 3.0.7 mysql 8.0测试条件常规对象 orm 框架是否支持xml是否支持 Lambda对比版本mybatis☑️☑️3.5.4sqltoy☑️☑️5.2.98lazy✖️☑️1.2.4…...
Leetcode 3068. Find the Maximum Sum of Node Values
Leetcode 3068. Find the Maximum Sum of Node Values 1. 解题思路2. 代码实现 题目链接:3068. Find the Maximum Sum of Node Values 1. 解题思路 这一题虽然标记为一道hard的题目,但其实就是一个脑筋急转弯的题目。 我们只需要想明白一点即可&…...
用 Dockerfile为镜像添加SSH服务
1、基础镜像ubuntu:18.04 2、替换为国内的安装源 3、安装openssh-server 4、允许root用户远程登陆 5、暴露端口22 6、服务开机自启动 1.创建目录 [rootopenEuler-node1 db]# mkdir sshd_ubuntu 2.创建 Dockerfile、 run.sh 、authorized_keys、vim aliyun.list 文件 [rootop…...
7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...
Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...
cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...
Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...
QT3D学习笔记——圆台、圆锥
类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体(对象或容器)QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质(定义颜色、反光等)QFirstPersonC…...
