重学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…...
幻兽帕鲁跨平台存档修复与数据迁移完全指南:解决GUID冲突的5步实战方案
幻兽帕鲁跨平台存档修复与数据迁移完全指南:解决GUID冲突的5步实战方案 【免费下载链接】palworld-host-save-fix Fixes the bug which forces a player to create a new character when they already have a save. Useful for migrating maps from co-op to dedica…...
granite-4.0-h-350m部署案例:Ollama在科研团队内部知识引擎中的应用
granite-4.0-h-350m部署案例:Ollama在科研团队内部知识引擎中的应用 如果你在一个科研团队工作,每天面对海量的论文、实验报告和内部文档,是不是经常感觉信息过载,想找点资料就像大海捞针?或者,当新成员加…...
Vim 快捷键手册
Vim 快捷键手册 模式说明 普通模式(Normal):默认模式,用于导航和命令执行插入模式(Insert):输入文本可视模式(Visual):选择文本命令模式(Command&…...
3个核心方案:用UNTRUNC工具修复损坏视频的专业指南
3个核心方案:用UNTRUNC工具修复损坏视频的专业指南 【免费下载链接】untrunc Restore a damaged (truncated) mp4, m4v, mov, 3gp video. Provided you have a similar not broken video. 项目地址: https://gitcode.com/gh_mirrors/unt/untrunc 价值定位&am…...
如何用Mermaid Live Editor高效创建专业图表:从技术文档到项目管理的全流程指南
如何用Mermaid Live Editor高效创建专业图表:从技术文档到项目管理的全流程指南 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trendin…...
3步解锁Windows安卓子系统的完整潜力:Magisk根权限与Google服务集成指南
3步解锁Windows安卓子系统的完整潜力:Magisk根权限与Google服务集成指南 【免费下载链接】WSA-Script Integrate Magisk root and Google Apps into WSA (Windows Subsystem for Android) with GitHub Actions 项目地址: https://gitcode.com/gh_mirrors/ws/WSA-S…...
大模型剪枝新范式:先浓缩,再剪枝——DenoiseRotator技术解读
在技术领域,我们常常被那些闪耀的、可见的成果所吸引。今天,这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力,让我们得以一窥未来的轮廓。然而,作为在企业一线构建、部署和维护复杂系统的实践者,我们深知…...
4个维度解析QKeyMapper:如何通过全设备协同开源工具实现操作自由
4个维度解析QKeyMapper:如何通过全设备协同开源工具实现操作自由 【免费下载链接】QKeyMapper [按键映射工具] QKeyMapper,Qt开发Win10&Win11可用,不修改注册表、不需重新启动系统,可立即生效和停止。支持游戏手柄映射到键鼠&…...
告别网络依赖:用Vue3+Leaflet和IIS搭建本地离线地图服务(附腾讯地图瓦片下载)
构建企业级离线地图解决方案:Vue3Leaflet与IIS深度整合指南 在数字化转型浪潮中,地图功能已成为各类管理系统的基础需求。然而,许多政企单位、军工机构及偏远地区项目往往面临网络不稳定或完全离线的特殊环境。本文将系统介绍如何基于Vue3、L…...
Python3.8开发环境搭建:Miniconda镜像实测,简单高效
Python3.8开发环境搭建:Miniconda镜像实测,简单高效 1. 为什么选择Miniconda-Python3.8镜像 如果你曾经在多个Python项目间切换,一定遇到过这样的困扰:项目A需要TensorFlow 1.15,项目B需要TensorFlow 2.0,…...
