首页 > 其他分享 >yaml文件学习

yaml文件学习

时间:2023-01-05 10:58:23浏览次数:35  
标签:文件 name map private 学习 yaml hello

YAML文件详解

YAML文件是SpringBoot使用一个全局的配置,配置文件名称是固定的,是用于修改SpringBoot自动配置的默认值,因为SpringBoot在底层都给我们自动配置好了。作用与properties文件基本一致,但是比properties更方便,更强大。例如修改项目的端口号

Properties文件:

  Server.port=8080

yaml文件:

  Service:

Port: 8080

基础语法:

重点:yaml文件对空格要求及其严格!!!

写法:字面量:普通的值 [数字,布尔值,字符串]

Key: value

1.1 单个存放[数字,布尔值,字符串]

字符串默认不用加引号,如果需要有转译的就需要加,不过需要注意双引号和单引号的区别

“”双引号:不会转义特殊的字符,最终以需要表达的特殊意义输出,例如\t、\n

Hello:“hello \n word!!!” #输出 hello 换行 word

‘’单引号:会把特殊字符转义,最终以普通字符的形式输出

Hello:“hello \n word!!!” #输出 hello \n word

1.2 存放对象、map(键值对)

存放对象有两种方式

第一种:第一层写对象名称,对象名称下面写属性名称,一定要注意缩进

对象的属性名称要在同一层次内

#有一个person类,该类下面有name、age两个属性

Person:

   Age:19

   Name:小明

写的时候一定要注意空格,注意对齐方式

第二种:行内写法

Dog:{name:小明,age:19}

Map集合的写法与对象差不多,也是两种一样的写法

Map:

  K1:map1

  K2:map2

1.3 存放数组(list、set)

   数组也有两种写法,同样要注意缩进

   第一种:用”-”来表示数组中的一个元素,注意“-”后的一个空格,不能少

   hobby:

     - Play basketball

     - sing

   第二种:行内写法

   Pet:[猫,狗,大象]

 

1.4 注意事项

   Yaml文件对空格要求及其严格

   属性和值的大小写都是十分敏感

   以缩进来控制层级关系,只要是左边对齐的一列数据都是在同一个层级的

  1. yaml文件注入配置文件

  这才是yaml文件的强大之处,可以给实体类直接注入匹配值

  以前的如果我们需要给属性赋值,需要在属性上使用注解@value或者到配置文件写上一大串配置,使用yaml后可以直接通过注解@ConfigurationProperties(prefix = "xxx")进行绑定

2.1 注入配置文件

      //student实体类

@Component

@ConfigurationProperties(prefix = "student") //绑定yaml配置文件中的student

public class Student {

   private String name;

   private Integer age;

   private Date birthday;

   private Boolean sex;

   private Map<String,Object> map;

   private List<Object> list;

   private Grade grade;

   //有参无参构造、get、set、toString方法

}

 

//Grade实体类

@Component

@ConfigurationProperties(prefix = "grade")

public class Grade {

    private String name;

    private String director;

    //有参无参构造、get、set、toString方法

}

Yaml文件

student:

  name: 小明

  age: 18

  birthday: 1999/12/26

  sex: true

  map:

      k1: map1

      k2: map2

  list:

   - list1

   - list2

  grade:

   name: 1812班

   director: 王主任

  1. yaml文件的小知识

在yaml文件中可以使用占位符、松散绑定等小功能,以及多环境切换也十分简单

3.1 松散绑定

不过使用松散绑定最好命名要规范,属性名称使用小驼峰命名

例如:lastName和last-name是一样的

3.2 占位符

使用${},在里面写需要的内容

例如:

1、${random.uuid}生成随机字符串

2、${random.int}生成随机整数

3、k2: ${map.k1:map2}
​     如果map.k1存在,则k2=map.k1的值
​     如果map.k1不存在,则k2=map2

4.文本块

|:使用|标注的文本北荣缩进表示的块,可以保留块中已有的回车换行

 

value: |

   hello

   world!

输出:hello 换行 world!

+表示保留文字块末尾的换行,-表示删除字符串末尾的换行

value: |

hello

value: |-

hello

value: |+

hello

输出:hello\n    hello      hello\n\n(有多少个回车就有多少个\n)

3.锚点与引用

使用 & 定义数据锚点(即要复制的数据),使用 * 引用锚点数据(即数据的复制目的地)

name: &a yamlbook: *abooks:

   - java

   - *a

   - python

输出book: yaml

输出books:[java,yaml,python]

注意*引用部分不能追加内容



 

标签:文件,name,map,private,学习,yaml,hello
From: https://www.cnblogs.com/hxzxy/p/17026889.html

相关文章

  • PowerShell 备份与定期删除文件
    $d1=get-date-format"yyyyMMdd"New-Item-ItemTypeDirectory-Force-PathD:\kingdee\$d1New-PSDrive-Name"z"-PSProviderFileSystem-Root"\\172.16.200.11\d$\K......
  • AppStore 打包上传后提示“二进制文件无效” 的解决方法
    昨天提交打包提交App,将包上传到iTunesConnect之后,以为就能发布了,便点击构建版本,发现没有刚刚上传的包,于是就点击"预发行"看一下,会看到"已上传",过不久再刷新一次再看,就变成......
  • Python学习day02
    一、用户交互1.猜年龄death_age=80name=input("yourname:")age=int(input("yourage:"))print("yourname"name)print("youcanstilllivefor"death_age-age"yea......
  • 【MySQL 8】MySQL 5.7都即将停只维护了,是时候学习一波MySQL 8了【转】
    MySQL8新特性选择MySQL8的背景:MySQL5.6已经停止版本更新了,对于MySQL5.7版本,其将于2023年10月31日停止支持。后续官方将不再进行后续的代码维护。另外,MySQL8.0......
  • 多个makefile构建多个目录的工程文件(大工程基本如此)
    通过多个层级的makefile构建整个工程级别的makefile,大工程如果不使用cmake等,基本如此组织,linux内核也是这样哈目录树➜test_pro3tree-h.├──[4.0K]app_1│......
  • cereas学习(5) vins-fusion vio融合gps全局优化
      残差定义  Factors.h/********************************************************Copyright(C)2019,AerialRoboticsGroup,HongKongUniversityof......
  • Day9:学习循环结构
    循环结构while循环do…while循环for循环在java5中引入了一种主要用于数组的增强型for循环while循环while是最基本的循环,它的结构为:while(布尔表达式){......
  • uniapp_03_获取媒体文件
    关于uniapp获取媒体文件什么是MediaStoreMediaStore内嵌类和常用查询字段查询图片查询视频查询音乐获取其它文件参考什么是MediaStoreMediaStore是And......
  • Python Kconfiglib初次学习
    1参考kconfiglib库官方介绍:kconfiglib·PyPIKconfiglib源码:GitHub-ulfalizer/Kconfiglib:AflexiblePython2/3KconfigimplementationandlibraryKconfig语法......
  • 20230103_每日学习记录
    20230103做多线程爬虫,需要有些对抗反扒机制的措施.有些时候直接写多线程,比如python的multiprocessing,会发现抓不下来东西.这也可能是我的爬虫没写好.但是就是发现同......