面试中有被问到优先级, 平时项目中通常只用到一种, 所以记录下
properties 和 yml 都是 Spring Boot 支持的两种配置文件,它们可以看作是 Spring Boot 在不同时期的两款“产品”。在 Spring Boot 时代已经不需要使用 XML 文件格式来配置项目了,取而代之的是 properties 或 yml 文件。
properties: properties配置文件属于早期,也是目前创建 Spring Boot(2.x)项目时默认的配置文件格式;
yml :yml可以看做是对 properties 配置文件的升级,属于 Spring Boot 的“新版”配置文件。
存放路径
两种配置文件一般都是放在src/main/resources目录下
优先级别
properties的优先级会高于yml,因为正常的情况是先加载yml,接下来加载properties文件。所以如果项目中同时存在这两个文件,两个文件配置同一个配置参数,properties会生效,yml不会生效。
区别说明
两种配置文件示例如下:
# properties
server.port=8088 # 配置项目启动端口号
debug=true # 开启调试模式
# 配置数据连接信息
spring.datasource.url=jdbc:mysql://127.0.0.1:8080/test?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# yaml
server:
port: 8088 # 配置项目启动端口号
debug: true # 开启调试模式
spring: # 配置数据连接信息
datasource:
url: jdbc:mysql://127.0.0.1:8080/test?characterEncoding=utf8
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
梳理区别:
-
结构不同
yml采用树形结构,更有层次感,可读性很强;相反,properties 则更为直接。可以看出properties存在着数据冗余,一切配置都需要从头写到尾。 -
语法不同
properties 的基本语法格式是“key=value”的形式;yml 的基本语法格式是“key: value”的形式
其他说明
yml 需要注意坑:
- 冒号后面需要加空格
- 在yml中缩进一定不能使用TAB,否则会报很奇怪的错误,缩进只能用空格。
文章参考:properties和yml进行对比 - DJ同学 - 博客园