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 基础中的双引号一致)。

数据类型:字面量、对象、数组

字面量

单个的、不可再分的值。datebooleanstringnumbernull

# k:🈳v
k: v

对象

键值对的集合。maphashobject(注: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}]

注意

  1. 一个 {} 表示一个对象,而不代表一组对象。
  2. 对象的 key 不能使用中文
  3. 对象的 key:🈳value 空格依旧存在
  4. set 集合是数组写法,而不是对象写法。

数组

一组按次序排列的值。arraylistqueueset

# 行内写法
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
posted @ 2022-11-10 16:05  软柠柠吖  阅读(150)  评论(0编辑  收藏  举报