在SpringBoot项目中有一个application.properties配置文件,该配置文件主要是配置项目的信息、数据库的连接信息、日志的相关信息等,但是使用.properties配置文件对这些属性进行配置存在一些问题:
spring.application.name=JavaWeb05_MyBatis
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url=jdbc:mysql://localhost:3306/db01
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=123456
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
可以发现在配置数据库的时候,在properties文件中写了大量相同的前缀:spring.datasource.,这十分的冗杂,并且配置项的层次结构十分不清楚。假如说在大型项目中有数百条配置语句,那么重复的前缀就太多了,并且项目的配置相当的混乱,不易阅读。所以说SpringBoot项目提供了多种属性配置的方式:properties、yaml、yml(其中yaml和yml配置文件是相同的)。大部分项目会习惯使用.yaml配置文件。
使用yaml配置文件配置SpringBoot项目
yaml配置文件基本格式
yaml配置文件简洁,层次分明,其主要是以数据为中心。
1.yaml进行配置主要是键值对,数值的前面必须有空格,作为分隔符。
2.使用缩进表示各层级之间的关系,缩进时应该使用空格键,不允许使用Tab键进行缩进(但是idea这类高级编译器会自动将Tab转换为空格)。缩进的空格数不重要,但是相同层级的元素必须对齐。
3.使用#表示注释,和语言一样,注释会被解析器忽略。
将properties配置改为yaml配置
参照以前的properties配置文件将其修改为yaml配置文件:
spring:
application:
name: JavaWeb06_Develop
datasource:
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://localhost:3306/db01
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: 123456
mybatis:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
将两份文件进行比较,发现yaml文件中不存在重复的前缀,并且该配置文件的层次结构十分清楚,用来配置SpringBoot项目是极好的。
yaml配置文件用于定义对象/Map集合:
yaml配置文件的数据是键值对,所以说其可以用来定义对象和Map集合,这种方式使用的十分广泛:
user:
name: zhangsan
age: 18
password: 123456
yaml配置文件还可以用于定义数组/List/Set集合
yaml配置文件还可以用来定义数组和集合:
hobby:
- java
- game
- sport
- sleep
需要特别注意的是:假如在yaml格式的配置文件中,若配置项的值是以“0”开头的,需要使用' ' 引起来,因为以0开头在yaml文件中表示8进制的数据。