SpringBoot的全局配置文件有application.properties&application.yaml两种配置文件,它们的配置文件名是固定的。
配置文件的作用:修改SpringBoot的自动配置默认值,SpringBoot在底层为我们提供这项功能的支持。
Yaml是YAML Ain't a Markup Language的递归缩写。
以往的配置文件大多数使用xxxx.xml,而现在出现的xxx.yaml配置文件以数据为中心,更加适合作为配置文件来使用。
两种文件的配置语法有所区别:
server:
port: 8081
server.port=8081
上为yaml,下为properties文件。
Yaml语法:
1.基本语法:
k:(空格)v:表示一对键值对(空格必须有);
以空格的缩进来控制层级关系;只要是左对齐的一列数据都属于同一层级的。如上图可以看出,server是一个层级的,以下缩进的是它的相关属性的配置。同时注意属性和值都是大小写敏感。
2.值的写法:
字面量: 普通值(数字,字符串,布尔):k: v;同时字符串默认不用加上单引号和双引号,
双引号:不会转义字符串当中的特殊字符,特殊字符会作为它的特殊表达含义输出。如 name: "zhangsan \n list": 输 出:zhangsan 换行 list
单引号:转义特殊字符,直接做字符串输出。如 name: "zhangsan \n list":
输 出:zhangsan \n list
对象、map(属性和 值)(键值对):
k: v,仍然是键值对的方式,例:
friends:
lastName:zhangsan
或:
friends:{lastName:zhangsan,age:18}
数组(List,Set)
用-(空格)值的方式来表示一个元素
pets:
-cat
-dog
或:
pets:{cat,dog}
最后要注意的是使用Yaml配置文件配置类属性的步骤:
1.在yaml文件中对应写好属性的配置值,并指定key。
2.在类上写上@ConfigurationProperties(prefix = "key"),就会自动把本类下的属性在配置文件中的指定key下的属性进行一一对应。
3.要引入配置文件处理器,否则就会有报错提示,引入后也会有相应提示:


下面是yaml和properties配置的区别:
#server:
# port: 8081
#
#person:
# name: liqiaoyu
# age: 22
# boss: false
# birthday: 2018/12/12
# map: {home: Neijiang,university: Nju}
# list:
# - luojinting
# - liyuchen
# pet:
# name: dog
# age: 2
## 也可以用行内写法
server.port=8081
person.name=liqiaoyu
person.age=22
person.birthday=1997/07/08
person.boss=false
person.map.home=Neijiang
person.map.university=Nju
#注意链表容器配置值的不同
person.list=liyuchen,luojinting
person.pet.name = dog
person.pet.age=2
关于主配置文件加载的理解,只要是application名的合法配置文件,SpringBoot项目会自动帮我们在它指定的配置目录下扫描并加载,不用我们在主运行类中配置,因为它的标签已经完成了ioc和配置文件的加载任务。
实体类需要引用配置文件的值,默认是主配置文件,也可以引用默认路径下的自己的配置文件或指定路径下的配置文件。
主配置文件一般加载和整个项目相关的,如端口,项目访问路径等。自定义配置文件一般用于配置一些实体的注入数据,如数据源等。