yml文件详解

YAML 是 "YAML Ain't a Markup Language"(YAML 不是一种标记语言)的递归缩写。在开发的这种语言时, YAML 的意思其实是:"Yet Another Markup Language"(仍是一种标记语言,但为了强调这种语言以数据做为中心,而不是以标记语言为重点,而用反向缩略语重命名。

基本语法

大小写敏感
使用缩进表示层级关系
缩进时不允许使用Tab键,只允许使用空格。
缩进的空格数目不重要,只要相同层级的元素左侧对齐即可

键值对表示:   key : value   。冒号后面必须加空格

元素

字面量

普通的值(数字,字符串,布尔)

 key: value

​ 字符串默认不用加上单引号或者双引号;

  • ​ “”:双引号

不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思

​ name: “zhangsan \n lisi”:输出;zhangsan 换行 lisi

  • ​ ”:单引号

会转义特殊字符,特殊字符最终只是一个普通的字符串数据

​ name: ‘zhangsan \n lisi’:输出;zhangsan \n lisi

对象

键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)

friends:

  lastName: zhangsan

  age: 20

行内写法:

friends: {lastName: zhangsan,age: 18}

数组

一组按次序排列的值,又称为序列(sequence) / 列表(list)

用- 值表示数组中的一个元素

pets:

 - cat

 - dog

 - pig

行内写法:

pets: [cat,dog,pig]

多行文本

保存新行 (Newlines preserved)

data: |                                     # 譯者注:這是一首著名的五行民謠(limerick)
   There once was a man from Darjeeling     # 這裡曾有一個人來自大吉嶺
   Who got on a bus bound for Ealing        # 他搭上一班往伊靈的公車
       It said on the door                  # 門上這麼說的
       "Please don't spit on the floor"     # "請勿在地上吐痰"
   So he carefully spat on the ceiling      # 所以他小心翼翼的吐在天花板上

根据设置,前方的引领空白符号(leading white space)必须排成条状,以便和其他数据或是行为(如示例中的缩进)明显区分。

折叠新行 (Newlines folded)

data: >
   Wrapped text         # 摺疊的文字
   will be folded       # 將會被收
   into a single        # 進單一一個
   paragraph            # 段落
   
   Blank lines denote   # 空白的行代表
   paragraph breaks     # 段落之間的區隔

和保存新行不同的是,换行字符会被转换成空白字符。而引领空白字符则会被自动消去。

高级语法

yml 文件中使用环境变量

Spring Boot 中可以用 spring.profiles.active 参数来指定系统环境,让系统加载不同的配置文件。
可以在程序启动的时候加上参数来指定需要的配置

java -Dspring.profiles.active="dev" -jar user.jar

当然我们也可以事先设置好系统的环境变量

expoer SERVER_EVN=test

然后在 yml 文件中用 active: ${SERVER_EVN} 来动态的获取系统已设置好的数据。这样这台 test 服务器中的再启动 Spring Boot 项目的时候就可以不用每次都去设置参数了。
同时 yml 也支持 ${SERVER_EVN:dev} 这样的方式来设置默认值,此时如果环境变量中没有 SERVER_EVN , active就会默认设置为"dev"。
 

你可能感兴趣的:(#,Spring)