SpringBoot配置
1、yaml语法
# key: value
name: xuhao
# 对象
student:
name: xuhao
age: 18
# 行内写法
student: {name: xuhao,age: 3}
# 数组
pets:
- cat
- dog
pets: [cat,dog,pig]
2、给属性赋值的几种方式
2.1、通过application.yaml文件
1.创建application.yaml文件
person:
name: xuhao
age: ${random.int}
happy: true
birth: 2000/10/01
maps: {k1: v1,k2: v2}
dogname: dn
lists:
- list1
- list2
# 如果person.dogname存在,则名字为dn_旺财,不存在则为旺财_旺财
dog:
name: ${person.dogname:旺财}_旺财
age: 3
2.在实体类上添加注解
@Component
@ConfigurationProperties(prefix = "person")
public class Person {}
2.2、通过properties文件
1.创建properties文件
name=xuhao
2.在实体类上添加注解并给属性赋值
@Component
@PropertySource(value = "classpath:xuhao.properties")
public class Person {
//@Value("name")
//SPEL表达式取出配置文件的值
private String name;
}
2.3、JSR303数据校验
开启方式:
在需要校验的实体类上加入注解:@Validated
2.3、总结
在开发中我们一般都使用yaml来注入值
使用yaml的好处:
-
yaml支持松散绑定:这是什么意思呢,比如我的yaml中写的last-name,这个和lastName是一样的,-后面跟着的字母默认是大写的,这就是松散绑定
-
yaml支持JSR303数据校验:这个就是我们可以在字段上增加一层过滤器验证,可以保证数据的合法性
-
复杂性类型封装:yaml可以封装对象,使用@value就不支持
3、多环境配置及配置文件的位置
当项目的目录下存在多个配置文件时,默认情况下,优先级别为:
file:./config/
file:./config/*/
file:./
classpath:/config/
classpath:/
多环境配置的切换
在开发中我们往往需要使用多种环境,比如开发环境,测试环境等等
1.现有以下三个配置文件,分别对应不同的环境
- application.properties
- application-dev.properties
- application-test.properties
properties中的环境切换
# springboot的多环境配置,可以选择激活哪一个配置文件
spring.profiles.active=test
yaml环境切换
server:
port: 8081
#切换环境
spring:
profiles:
active: dev
---
server:
port: 8081
spring:
profiles: dev
---
server:
port: 8083
spring:
profiles: test
使用yaml的好处:
使用properties时,3个环境需要3个不同文件,而使用yaml则只需要写在同一个文件中,使用---
分隔