当前位置: 首页 > 后端技术 > Java

面试官:什么是YAML?它与SpringBoot有什么关系?_0

时间:2023-04-01 14:48:15 Java

来源:blog.csdn.net/chenlixiao0071,什么是YAMLYAML是“YAMLAin'taMarkupLanguage”(YAML不是标记语言)的递归缩写。YAML实际上的意思是:“YetAnotherMarkupLanguage”(仍然是一种标记语言)。这种声音的主要优势是以数据为中心,而不是以标记语言为重点,比如xml语言会大量使用标记。YAML是一种可读性强、易于理解的数据序列化表达格式。它的语法与其他高级语言相似,可以很方便地表达列表(数组)、哈希表、标量等数据形式。它使用空白符号进行缩进和大量依赖于外观的特征,特别适用于表达或编辑数据结构、各种配置文件等。YAML配置文件的后缀为.yml,如配置文件applicationSpringboot项目中使用的.yml。2.基本语法YAML使用可打印的Unicode字符,可以使用UTF-8或UTF-16。数据结构为键值对形式,即键名:值,注意冒号后必须有空格。每个列表(数组)成员都在一行中表示,前面有破折号+空格(-)。或者使用方括号([])并用逗号+空格(,)分隔成员。哈希表的每个成员在键值和内容之间用冒号+空格(:)隔开。或者使用花括号({})并用逗号+空格(,)分隔它们。引号一般不用于字符串值,但必要时可以使用。当使用双引号表示字符串时,字符串中的特殊字符(如\n)将被转义。使用单引号时不会转义字符串中的特殊字符。区分大小写0d9f12e0ed43f02a97c0941??c5d325d989c6af5fb0276dc7&scene=21#wechat_redirect)使用缩进表示层级关系。缩进不允许使用tabs,只允许使用空格,因为在不同的系统下tabs的长度可能不一样。缩进空格的个数可以任意,只要在一个文件中可以有同级的左对齐元素,多个文件之间可以用三个连续的连字符(-)来区分。还有一个可选的三个点(...)序列来指示文件的结尾。'\#'表示注释,可以出现在一行中的任何位置。当单行注释使用逗号或冒号时,后面必须跟一个空白字符,所以你可以在字符串或值中自由添加分隔符(例如:5,280或http://www.wikipedia.org)没有引号。3.数据类型标量(scalars):单一的、不可分割的值对象:键值对的集合,也称为映射(mapping)/散列(hashes)/字典(dictionary)数组:一组按顺序排列的值,也称为序列(sequence)/列表(list)标量标量是最基本的数据类型,不可分割的值,它们一般用来表示单个变量,有以下七种:[string[BooleanValue][Integer][Float][Null][Time][Date]#Stringstring.value:你好!我是陈皮!#布尔值,trueorfalseboolean.value:trueboolean.value1:false#Integerint.value:10int.value1:0b1010_0111_0100_1010_1110#Binary#Floatingpointnumberfloat.value:3.14159float.value1:314159e-5#Scientificnotation#null,~代表nullnull.value:~#时间,时间采用ISO8601格式,时间和日期之间使用T连接,最后用+表示时区datetime.value:!!timestamp2021-04-13T10:31:00+08:00#日期,日期必须使用ISO8601格式,即yyyy-MM-dddate.value:!!timestamp2021-04-13这样,我们可以在程序中引入,如下:@RestController@RequestMapping("demo")publicclassPropConfig{@Value("${string.value}")privateStringstringValue;@Value("${boolean.value}")privatebooleanbooleanValue;@Value("${boolean.value1}")privatebooleanbooleanValue1;@Value("${int.value}")privateintintValue;@Value("${int.value1}")私有intValue1;@Value("${float.value}")privatefloatfloatValue;@Value("${float.value1}")privatefloatfloatValue1;@Value("${null.value}")privateStringnullValue;@Value("${datetime.value}")privateDatedatetimeValue;@Value("${date.value}")私人日期日期值;}SpringBoot基础就不介绍了,推荐这个实用教程:https://github.com/javastacks...Objects我们知道单个变量可以使用键值对,使用冒号结构来表示核心价值。注意冒号后面必须加一个空格来表示一个缩进级键值对的对象。如下图:person:name:陈皮age:18man:true然后将这些属性赋值给程序中的Person对象。注意Person类中要添加get/set方法,否则属性将无法正确获取配置文件的值。使用@ConfigurationProperties注入对象,@value不能很好的解析复杂对象。@Configuration@ConfigurationProperties(prefix="my.person")@Getter@SetterpublicclassPerson{私有字符串名称;私人年龄;privatebooleanman;}当然也可以使用key:{key1:value1,key2:value2,..}的形式如下:person:{name:陈皮,age:18,man:true}的array可以用一个短条加一个空格-行首组成数组的每个元素,地址栏如下:SpringBoot学习笔记分享给大家。人:姓名:陈皮年龄:18人:真实地址:-深圳-北京-广州也可以用方括号内嵌显示,如下:人:姓名:陈皮年龄:18人:真实地址:[深圳,北京,广州]在代码中引入如下:@Configuration@ConfigurationProperties(prefix="person")@Getter@Setter@ToStringpublicclassPerson{privateStringname;私人年龄;私人布尔人;privateListaddress;}ifarray字段的成员也是一个数组,可以嵌套,如下:person:name:陈皮age:18man:trueaddress:[深圳、北京、广州]twoArr:---2-3-1---10-12-30@Configuration@ConfigurationProperties(prefix="person")@Getter@Setter@ToStringpublicclassPerson{privateStringname;私人年龄;privatebooleanman;javaprivateList地址;privateList>twoArr;}如果数组成员是对象,则使用以下两种形式:10},{name:XiaoWang,age:15}]4.文本块如果要引入多行文本块,可以使用|符号,注意冒号:和|之间必须有一个空格符号人:姓名:|你好爪哇!我没事!谢谢!再见!它与添加双引号的效果相同,可以转义特殊字符:person:name:"HelloJava!!\nIamfine!\nThanks!GoodBye!"5.显示指定类型有时我们需要显示指定某些值的类型,我们可以使用!(感叹号)明确指定类型。!单感叹号一般为自定义类型,!!双感叹号为内置类型,例如:#指定为字符串string.value:!!strHelloWorld!#!!timestamp指定为日期和时间类型datetime.value:!!timestamp2021-04-13T02:31:00+08:00内置类型如下:!!int:整型!!float:浮点型!!bool:布尔型!!str:字符串类型!!binary:二进制类型!!timestamp:日期时间类型!!null:空值!!set:集合类型!!omap,!!pairs:key-valuelistorobjectlist!!seq:sequence!!map:hashtabletype6,参考参考会用于&锚点和星号,&用于建立锚点,<<表示合并到当前数据中,用于引用锚点。最新面试题整理完毕,点击Java面试库小程序在线刷题。xiaohong:&xiaohongname:小红age:20dept:id:D15D8E4F6D68A4E88E<<:*xiaohong上面最后等价于:xiaohong:name:小红age:20dept:id:D15D8E4F6D68A4E88Ename:小红还有一个文件age:20Reference,引用定义的变量,如下:base.host:https://chenpi.comadd.person.url:${base.host}/person/add7,单文件多配置可以在同一个文件多个文件分区,即多个配置。一个yml文件中,多个不同的配置用-隔开,根据spring.profiles.active的值决定启用哪个配置#常用配置spring:profiles:active:pro#指定使用哪个文档块#开发环境configurationspring:profiles:dev#profiles属性代表配置的名称server:port:8080#生产环境配置spring:profiles:proserver:port:8081推荐2个springboot+Vue原创项目,有完整的视频讲解、文档和源码代码:【VueAdmin】实战教程你开发SpringBoot+Jwt+Vue的前后端分离后台管理系统视频讲解:https://www.bilibili.com/video/BV1af4y1s7Wh/前端完整开发文档:https://www.zhuawaba.com/post/18完整开发文档后台:https://www.zhuawaba.com/post/19【VueBlog】基于前后端分离博客项目的完整教学视频讲解关于SpringBoot+Vue开发:https://www.bilibili.com/video/BV1af4y1s7Wh/完整开发文档:https://www.zhuawaba.com/post/17有什么问题可以来我的公众号【Java问答】问我