SpringBoot中的配置也是通过配置文件来完成的,在SpringBoot中主要有两种配置文件格式。
propertiesyamlproperties配置文件是我们使用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 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更广泛常用,更易于阅读和被人接受。