Spring Boot 2从入门到入坟 | 配置文件篇:yaml语法详解
Posted 李阿昀
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Boot 2从入门到入坟 | 配置文件篇:yaml语法详解相关的知识,希望对你有一定的参考价值。
写在前面
至此,我们对Spring Boot的基础入门学习就正式结束了。我们通过前面的学习掌握了Spring Boot的简单使用以及了解了它的自动配置原理。
接下来,我们就要进入到Spring Boot核心功能篇的学习中了,在核心功能篇中,我们重点关注以下几点。
将上面几点用语言概括一下就是:
- Spring Boot里面的配置文件该怎么使用
- Spring Boot如何来做Web开发
- Spring Boot如何访问mysql数据库
- Spring Boot如何使用JUnit5来做单元测试
- Spring Boot在生产环境下的指标监控功能
- Spring Boot的一些其他原理解析
这里,我们不妨先来说一下配置文件,因为后面的几点都是比较大块的内容,配置文件了解清楚之后,我们再来学习下面的内容。
文件类型
properties
我们之前在入门Spring Boot的时候,用过properties配置文件,还记得吗?就是application.properties
,即全局配置文件。由于properties配置文件的语法蛮简单的,所以这里我就不再赘述了。
其实,Spring Boot除了允许我们可以在全局编写一个application.properties
作为其配置文件之外,还兼容另外一种格式的配置文件,即yaml,下面我就来为大家详细地介绍一下它。
yaml
简介
YAML是
"YAML Ain't Markup Language"
(YAML不是一种标记语言)的递归缩写。在开发这种语言时,YAML的意思其实是"Yet Another Markup Language"
(仍是一种标记语言)。
这话说得真是让人摸不着头脑,一会说yaml不是一种标记语言,一会又说它仍是一种标记语言,所以,大家戏称它为薛定谔的yaml。
其实,说来说去,大家一般认为yaml就是另外一种标记语言,反正无论yaml是什么,它后面都跟着Markup Language
,就像XML一样,归根结底也只不过都是些标记语言。既然yaml是标记语言,那么它里面写的无非都是一些标签啦什么什么的,或者还有些别的什么写法。
而且,yaml还非常适合用来做以数据为中心的配置文件。如果你只是想存储一些配置数据,而不是去定义一些写行为动作,那么你就非常适合使用yaml配置文件了。此外,在未来很多的其他技术里面,yaml基本都是人家配置文件的首选。
基本语法
与XML相比,yaml有更为简洁的语法,而且占用的空间也是轻量级的,也即更省资源,所以我们一定要来学习一下它的基本语法,并彻底学会如何使用它。
yaml使用起来也非常简单,因为它的语法几乎简单到只需要5、6分钟我们就能完全掌握。下面我就来为大家详细介绍一下它的语法。
语法一
我们无论是在properties格式,还是在什么其他格式的配置文件里面,写过很多的配置都是key:value
这种形式的,就是某一个键等于什么值。在yaml里面,key:value
这种形式的表示方式也非常简单,就是key: value
,大家一定要注意:
后面有一个空格哟!
另外,key
、value
是区分大小写的,也即大小写敏感。
语法二
yaml语法里面最神奇的地方在于,它是使用缩进来表示层级关系的。
假设现在有一个User类,而且它里面还有一些属性,如果我们还是像之前一样来编写XML,那么是不是得用<user></user>
这样一个开闭标签来表示一个用户啊?而且用户里面的其他一些内容都得嵌套在<user></user>
标签里面,由此我们就知道了,XML是使用父子标签来表示层级关系的。
而在yaml里面,它是通过空格缩进来表示层级关系的,如下图所示。
另外,我们默认是不允许使用Tab
键进行缩进的,大家有可能为了图快,直接按一下Tab
键缩进几格,要知道这是不被允许的,我们只允许使用空格来进行缩进。说是这样说,不过实际上我们在用IDEA进行开发的时候,大家依旧可以放心大胆地去用Tab
键,因为也没有看到出现什么问题。
还有一点需要大家知道,我们缩进的空格数并不重要,只要相同层级的元素左对齐即可。
语法三
在yaml中,我们是使用#
来表示注释的,如下图所示。
语法四
在yaml中,如果我们想要写一些字符串,那么默认是不需要加上引号的,即字符串无须加引号;如果加上了单双引号(即''
与""
),那么这将表示字符串内容会被转义/不转义,关于这一点,待会我就会用一个例子来为大家说明一下。
数据类型
yaml的基本语法学会了之后,是不是就能立马使用这些语法来编写yaml配置文件了呢?未必哟,因为我们无论是来编写什么标记语言,都得掌握该标记语言里面的数据类型,不然你是无从下手的。于是,下面我就来为大家讲一下yaml里面的数据类型,大家可一定要掌握哟!
字面量
字面量就是指单个的、不可再分的值,例如date
、boolean
、string
、number
、null
。那么问题来了,在yaml配置文件里面该怎么表示这些字面量呢,即该如何表示一个日期、一个布尔类型、一个字符串、一个数字等等等等。
字面量的表示方法其实非常简单,如下所示,后面value
这块,若是字符串则写字符串、若是数字则写数字,直接写就行。
key: value
注意,冒号后面要有一个空格哟,可别忘了!
对象
对象就是指键值对的集合。那么问题来了,在yaml配置文件里面该怎么表示一个对象呢?
对象的表示方法共有两种。由于对象里面都有属性,所以对象的第一种表示方法就应该是下面这样子的。
key:
key1: value1
key2: value2
key3: value3
比如拿User类型的对象来说,它里面应该有username、age、gender等等这些属性,所以该User类型的对象在yaml配置文件里面的表示方法就应该是下面这样子的。
user:
username: 张三
age: 18
gender: 男
注意,对象里面的属性都要左对齐哟,不管前面空几格,然后,键值对中值的前面都得写上一个空格。
对象的第二种表示方法如下所示。
key: {key1:value1,key2:value2,key3:value3}
这种表示方法就是行内写法,非常类似于JSON的写法,是不是啊?
数组
数组就是指一组按次序排列的值。
以上是关于Spring Boot 2从入门到入坟 | 配置文件篇:yaml语法详解的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot 2从入门到入坟 | 配置文件篇:自定义类绑定的配置提示
Spring Boot 2从入门到入坟 | 基础入门篇:「Spring Boot 2从入门到入坟」系列教程介绍
Spring Boot 2从入门到入坟 | 基础入门篇:「Spring Boot 2从入门到入坟」系列教程介绍
Spring Boot 2从入门到入坟 | 配置文件篇:yaml语法详解
Spring Boot 2从入门到入坟 | 自动配置篇:源码分析之HttpEncodingAutoConfiguration自动配置类
Spring Boot 2从入门到入坟 | 自动配置篇:源码分析之HttpEncodingAutoConfiguration自动配置类