Spring Boot配置
两种默认配置文件
application.properties
properties文件是一种常用的配置文件,文件后缀为“.properties”,属于文本文件, 文件内容的基本语法 格式是“key=value”的格式,用“#”作为注释的开始。
application.yml
yaml是一个类似 XML、JSON的标记性语言,强调以数据为中心,并不是以标识语言为重点,本质上是
一种通用的数据串行化格式。
大小写敏感
key:(空格)value表示键值对关系
使用空格缩进表示层级关系,不允许使用Tab键缩进
使用#进行单行注释
字符串无需加引号,如果要加, "“与 '‘表示字符串内容会被转义或不转义。
其中单引号’‘字符串内容不会被转义,举个例子’ \n '会输出\n这个字符串
双引号 “” 字符串内容会被转义,举个例子”\n "会把\n进行转义输出换行回车
yaml的数据结构
基本结构
纯量
是指基本的、不可再分的值,包括整数、浮点数、字符串、布尔、日期时间、NULL等
#多环境配置,测试,生产用不同的配置文件
spring.profiles.active=test
#应用名称
spring.application.name=apply
#服务端口号
server.port=8081
server:
port: 8081 #服务端口号
spring:
application:
name: apply #应用名称
profiles:
active: 'test ’ #多环境配置,测试,生产用不同的配置文件
标量
字符串
name:susy
数组
是一组按次序排列的值
对象
映射/字典/哈希,键值对,表示形式有两种:缩进写法或行内写法
扩展结构
复合结构
包含数组,对象,标量等结构
布尔值
isFlag: True
Null:使用~表示
a: ~
日期:YYYY-MM-DD格式
d: 2023-03-06
时间:YYYY-MM-DDThh:mm:ss+时区
t: 2018-02-17T15:02:31+08:00
特殊字符、空格
使用单引号转义
email: ‘123@qq.com’
talk: ‘Hello World’
数组:如列表numbers:[1,2,3,4,5]
- 列表值,使用“-”表示列表中的元素
表示方式1:
numbers:
- 1
- 2
- 3
- 4
- 5
#表示方式2:
numbers: [1,2,3,4,5]
对象:如字典:ab:{“a”:1,“b”:“哈哈”}
表示方式1
ab:
a: 1
b: 哈哈 # 字符串哈哈可不使用引号
表示方式2:
ab: {“a”:1,“b”:“哈哈”}
复合结构:{“code”:200,students:[{name:“张三”,age:12,hobby:[“打篮球”,“跑步”]},
{name:“李四”,age:17,hobby:[“打羽毛球”,“看书”]}]}
引用
引用已有键的值,可使用&锚点和*别名来引用,可通俗理解为复制粘贴,可复用yaml文件中已有键
值对。
以上内容被读取后输出为:
Yaml的多文档配置
yaml可以在同一个文件中,实现多文档分区,即多配置。将一个文件分割为相对独立的多个文档,用“–
-”在每个文档的开始作为分隔符,使用“…”作为文档的结束符。
hobby也可以使用行内写法:
hobby:[打篮球,跑步]
code: 200
students:
name: 张三
age: 12
hobby:
- 打篮球
- 跑步
name: 李四
age: 17
hobby:
- 打羽毛球
- 看书
键值
使用&别名建立锚点,将students全部内容设别名为“stu”
students: &stu
name: zhangsan
age: 12
引用键
引用students的内容,使用<< *别名即可,<< 表示合并当前数据
class1:
<<: *stu
键值
students:&stu
name: zhangsan
age: 12
引用键
class1:**
name: zhangsan
age: 12**
#公共配置,指定使用哪个环境
spring:
profiles:
active: prod
配置文件的路径和优先级
默认的配置文件放在resources下
优先级为逐级升高:④的优先级最高,①的优先级最低。
若出现同一个属性配置,则优先级高的配置会覆盖优先级低的配置,若配置的属性不同,则多个配置文
件间会互补。
#开发环境配置
spring:
profiles: dev
server:
port: 8080
#生产环境配置
spring:
profiles: prod
server:
port: 80
…