02-yml 基础语法和多环境配置
yml
yml(yaml):Yet Another Markup Language(仍是一种标记语言)。
非常适合用来做以数据为中心的配置文件。
基本语法
-
key:
🈳value
kv 之间有空格🈳。 -
大小写敏感
-
使用缩进表示层级关系
-
缩进不允许使用 tab,只允许空格
-
缩进的空格数不重要,只要相同层级的元素左对齐即可
-
#
表示注释 -
字符串无需加引号。如果要加,
''
与""
表示字符串内容会被转义(默认)/不转义。- 转义 VS 不转义
解释:
① 我们在学
Java
基础的时候,\n
所代表的意思是换行,当我们定义一个字符串String str = "软柠\n柠吖";
soutv
打印的结果是换行的(自行检验)。因此如果\n
输出结果为换行空白符,则说明没有转义,反之如果\n
的输出结果为\n
,则说明进行了转义。② 在
yml
配置文件中,单引号会将\n
作为\n
字符串输出(单引号会转义,默认,默认的意思就是你只写字符串,不加任何引号,SpringBoot 底层会给你加上单引号);双引号会将\n
作为换行空白符输出(双引号不会转义,这和Java
基础中的双引号一致)。
数据类型:字面量、对象、数组
字面量
单个的、不可再分的值。
date
、boolean
、string
、number
、null
# k:🈳v
k: v
对象
键值对的集合。
map
、hash
、object
(注:set
不属于)
# 行内写法
# k:🈳{k1:🈳v1, k2:🈳v2, k3:🈳v3}
k: {k1: v1, k2: v2, k3: v3}
#k:
# k1:🈳v1
# k2:🈳v2
# k3:🈳v3
k:
k1: v1
k2: v2
k3: v3
# Map<String, List<Pet>> allPets
allPets:
sick:
- {name: 小白狗, age: 3}
- name: 小花猫
age: 6
weakness: [{name: 小鸟, age: 1}, {name: 白猫, age: 2}]
health: [{name: 鳄鱼, age: 10}]
注意:
- 一个
{}
表示一个对象,而不代表一组对象。 - 对象的 key 不能使用中文。
- 对象的 key:🈳value 空格依旧存在。
set
集合是数组写法,而不是对象写法。
数组
一组按次序排列的值。
array
、list
、queue
、set
# 行内写法
k: [v1, v2, v3]
k:
- v1
- v2
- v3
# List<Pet> pets
pets: [{name: dog, eat: 骨头}, {name: cat, eat: 鱼}]
pets:
- {name: dog, eat: 骨头}
- {name: cat, eat: 鱼}
pets:
- name: dog
eat: 骨头
- name: cat
eat: 鱼
pets:
- {name: dog, eat: 骨头}
- name: cat
eat: 鱼
多环境配置
在项目开发过程中,通常同一套程序会被部署到不同的环境中,例如开发 dev
、测试 test
和生产(正式 )prod
环境,每个环境的数据库地址、账号、密码和服务器的端口等配置会有所不同。
Spring Boot 框架自身就支持多个环境的配置文件,它通过打包命令指定特定的配置文件来打包项目。
Spring Boot 默认的配置文件名是 application.properties
或者 application.yml
。
这里使用 application.yml
方式的配置文件,如果需要多环境的配置文件,则新的配置文件的名称需要遵从 application-{profile}.yml
的格式,其中 {profile}
为环境的名称,例如:
- application-dev.yml:为开发环境配置
- application-test.yml:为测试环境配置
- application-prod.yml:为生产环境配置
项目启动时加载哪个配置文件需要在 application.yml
文件中通过 spring.profiles.active
属性来指定,其值对应 {profile}
值。例如,设置 spring.profiles.active=test
,项目会加载 application-test.yml 配置文件的内容。
spring:
profiles:
active: test