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,大家一定要注意:后面有一个空格哟!

另外,keyvalue是区分大小写的,也即大小写敏感。

语法二

yaml语法里面最神奇的地方在于,它是使用缩进来表示层级关系的。

假设现在有一个User类,而且它里面还有一些属性,如果我们还是像之前一样来编写XML,那么是不是得用<user></user>这样一个开闭标签来表示一个用户啊?而且用户里面的其他一些内容都得嵌套在<user></user>标签里面,由此我们就知道了,XML是使用父子标签来表示层级关系的。

而在yaml里面,它是通过空格缩进来表示层级关系的,如下图所示。

在这里插入图片描述

另外,我们默认是不允许使用Tab键进行缩进的,大家有可能为了图快,直接按一下Tab键缩进几格,要知道这是不被允许的,我们只允许使用空格来进行缩进。说是这样说,不过实际上我们在用IDEA进行开发的时候,大家依旧可以放心大胆地去用Tab键,因为也没有看到出现什么问题。

还有一点需要大家知道,我们缩进的空格数并不重要,只要相同层级的元素左对齐即可。

在这里插入图片描述

语法三

在yaml中,我们是使用#来表示注释的,如下图所示。

在这里插入图片描述

语法四

在yaml中,如果我们想要写一些字符串,那么默认是不需要加上引号的,即字符串无须加引号;如果加上了单双引号(即''""),那么这将表示字符串内容会被转义/不转义,关于这一点,待会我就会用一个例子来为大家说明一下。

数据类型

yaml的基本语法学会了之后,是不是就能立马使用这些语法来编写yaml配置文件了呢?未必哟,因为我们无论是来编写什么标记语言,都得掌握该标记语言里面的数据类型,不然你是无从下手的。于是,下面我就来为大家讲一下yaml里面的数据类型,大家可一定要掌握哟!

字面量

字面量就是指单个的、不可再分的值,例如datebooleanstringnumbernull。那么问题来了,在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自动配置类