Spring Boot配置文件
SpringBoot中的配置也是通过配置文件来完成的,在SpringBoot中主要有两种配置文件格式。
- properties
- yaml
一、properties
properties配置文件是我们使用SSM的时候最常用的配置文件了,在后缀为properties的配置文件中,是以key=value的方式进行配置的。
比如数据库连接配置文件:db.properties
server.port=8081
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/demo?serverTimezone=UTC
jdbc.username=root
jdbc.password=123456
person.name=zhangsan
person.age=12
person.gender=男
person.desc=my name is ${person.name},my age is ${person.age}
这里我们不再过多演示。
二、yaml
YAML是“YAML Ain’t Markup Language YAML不是一种标记语言”的外语缩写,但为了强调这种语言以数据做为中心,而不是以置标语言为重点,而用返璞词重新命名。它是一种直观的能够被电脑识别的数据序列化格式,是一个可读性高并且容易被人类阅读,容易和脚本语言交互,用来表达资料序列的编程语言。它是类似于标准通用标记语言的子集XML的数据描述语言,语法比XML简单很多。
我们在配置spring的xml文件的时候,有属于Spring的xml文件格式;我们配置SpringMVC的xml配置文件的时候,有属于SpringMVC的xml文件格式;我们配置Mybatis的xml文件的时候,又有独属于Mybatis的xml文件格式。
不同的xml文件的语法不同,我们在配置不同的xml文件的时候,需要严格注意不同xml文件的语法细节,让人烦不胜烦。而yaml不同,yaml文件的属性配置方式是固定的,而且符合我们的使用习惯。
yaml使用基本原则:
- 大小写敏感
- 使用缩进表示层级关系
- 禁止使用tab缩进,只能使用空格键
- 缩进长度没有限制,只要元素对齐就表示这些元素属于一个层级。
- 使用#表示注释
- 字符串可以不用引号标注
yaml配置文件方式是我们首次接触,是以key: 空格value来进行属性赋值的。
注意:空格不能省略,否则无法识别
server:
port: 8082
Person:
lastname: zhangsan
age: 10
sex: 男
likes:
- book
- movie
当我们使用yaml对Person类赋值的时候,要匹配yaml中赋的值,需要使用注解@ConfigurationProperties或者@Value
//使用@ConfigurationProperties注解匹配yaml文件中对象的赋值
//使用参数prefix来添加前缀,表示匹配yaml配置文件中person下参数
//@ConfigurationProperties表示批量注入属性
@ConfigurationProperties(prefix = "person")
@Component
public class Person {
//也可以使用@Value来对属性一个个的注入,但是当属性很多时,事情就变得麻烦了
//我们很少使用@Value,更多的还是使用@ConfigurationProperties
// @Value("${person.lastname}")
private String lastName;
//@Value("${person.age}")
private Integer age;
//@Value("${person.sex}")
private String sex;
private List<String> likes;
.......
}
@ConfigurationProperties和@Value的区别
@ConfigurationProperties | @Value | |
---|---|---|
功能 | 批量注入配置文件中的属性 | 一个个注入属性 |
松散绑定(驼峰、下划线等) | 支持 | 不支持 |
SpEL | 不支持 | 支持 |
JSR303数据校验(@Email等) | 支持 | 不支持 |
复杂类型封装 | 支持 | 不支持 |
配置多环境切换
配置开发环境:application-dev.yaml
server:
port: 8084
配置测试环境:application-test.yaml
server:
port: 8083
在application.yaml中可以随意切换使用哪一个环境:使用测试环境
spring:
profiles:
active: test
在application.yaml中可以随意切换使用哪一个环境:使用开发环境
spring:
profiles:
active: dev
使用配置文件的细节:
- 配置文件主要用来注入属性(比如数据库连接的配置)
- 配置文件中还可以使用表达式
- JSR303的数据校验(如邮箱验证:@Email)
- 多环境配置(如生产环境和测试环境的切换)
三、总结
我们可以使用properties来进行SpringBoot的配置,也可以使用yaml的方式进行配置。两者没有什么优劣之分,都可以完成配置功能,看个人使用习惯而已。
推荐使用yaml的方式进行配置,yaml更广泛常用,更易于阅读和被人接受。