前言
在绝大数情况下springboot只需要application文件就可以完成项目中的所有配置,但application文件存在两种格式分别是(properties和YAML),下面来介绍这两种类型的区别与用法。
一、properties类型
properties类型是springboot项目默认使用的开发配置文件,一般你创立项目,默认生成的是这个,但是需要注意的是我们开发项目一般不使用它,此话怎讲?且听我娓娓道来,现在来介绍该类型的用法,它核心格式一般是键值对,其中键和值之间一般用"="等号隔开,键通过.进行语义分割,用来表示层级关系,拿配置数据库来举例子,可以看到对SQL数据库配置如下:
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=xxx
spring.datasource.password=xxx
spring.datasource.url=jabc:mysql://localhost:3306/xxx?serverTimezone=UTC&characterEncoding=UTF-8
可以看到我上述的这些信息有一个弊端,就是键与键之间无法共享上级键名,你还是要老老实实的把层级重新敲一遍,而YAML类型就避免了这一弊端,往下看。
二、YAML类型
YAML类型是一种借鉴了XML、JSON等语言的语法创造出来的应用于配置文件的新语法,
基本特点是
1.大小写敏感
2.使用缩进表示层级关系
3.键的后面是冒号空格在在加上值
4.#号表示注释
下面再拿MySQL数据库举个例子,同时配置数据库用YAML类型的配置文件
spring:
datasource:
username: xxx
password: xxx
driver-class-name: com.mysql.cj.jdbc.Driver
url: jabc:mysql://localhost:3306/xxx?serverTimezone=UTC&characterEncoding=UTF-8
可以看到领用空格缩进来表示层级关系将大大减少敲代码的量(简称偷懒)所以一般我们手动会将核心配置文件改一下后缀,但是配置文件也不过多几千字的信息量,复制分享某一段配置场景时候,YAML会牵扯大量层级结构以及无关节点,而properties却没有,但是我还是偏向于yml,因为能偷懒就偷懒原则,打不了敲一点注释,是吧。
三、关于这些类型的优先级问题
实际上是有三种配置格式,这里我有一种yml格式,以我的理解就是yaml,但是确实存在这玩楞,这时候就会出现一种情况,假如三个配置文件都存在,那到底那个生效,了解不了这句话意思,可以类比css选择器优先级顺序,到底哪个生效,结果如下
properties>yml>yaml
不同配置文件根据优先级进行覆盖
总结
希望看了这篇能对springboot核心配置有一定程度的了解,欢迎批评指正,但不喜勿喷。