常用配置
YAML、JSR303校验、多环境切换
YAML基本使用
YAML 是 "YAML Ain't a Markup Language"(YAML 不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"(仍是一种标记语言)。
基本语法
大小写敏感
使用缩进表示层级关系
缩进不允许使用tab,只允许空格
缩进的空格数不重要,只要相同层级的元素左对齐即可
'#'表示注释
数据类型
YAML 支持以下几种数据类型:
对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
纯量(scalars):单个的、不可再分的值
dog:
name: xiaohuang
age: 3
happy: false
lists: [girl,dog,code]
maps: {k1: v1,k2: v2}
birth: 2020/12/05
cat:
name: xiaosan
age:3
配置注入
@ConfigurationProperties(prefix = "dog")
需要引入spring-boot-configuration-processor包,否则会爆红
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
yaml中还支持占位符的写法:
age: ${random.int}
JSR303校验
Springboot中可以用@validated
来校验数据,如果数据异常则会统一抛出异常,方便异常中心统一处理。
@Component //注册bean
@ConfigurationProperties(prefix = "dog")
@Validated //数据校验
public class Dog {
@Email(message = "邮箱格式不正确")
private String name;
private Integer age;
}
使用Validated须引入spring-boot-starter-validation
包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
常用验证类型

多环境切换
profile
是Spring对不同环境提供不同配置功能的支持,可以通过激活不同的环境版本,实现快速切换环境
多配置文件:
我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml , 用来指定多个环境版本;
例如:
application-test.properties 代表测试环境配置
application-dev.properties 代表开发环境配置
但是Springboot并不会直接启动这些配置文件,它默认使用application.properties主配置文件;
我们需要通过一个配置来选择需要激活的环境:
#比如在配置文件中指定使用dev环境,我们可以通过设置不同的端口号进行测试;
#我们启动SpringBoot,就可以看到已经切换到dev下的配置了;
spring.profiles.active=dev
yaml的多文档块:
和properties配置文件中一样,但是使用yml去实现不需要创建多个配置文件,更加方便了 !
server:
port: 8081
spring:
profiles:
active: dev
---
server:
port: 8082
spring:
profiles: dev
---
server:
port: 8083
spring:
profiles: test
配置文件加载位置:
外部加载配置文件的方式十分多,我们选择最常用的即可,在开发的资源文件中进行配置!
优先级1:项目路径下的config文件夹配置文件
优先级2:项目路径下配置文件
优先级3:资源路径下的config文件夹配置文件
优先级4:资源路径下配置文件
优先级由高到底,高优先级的配置会覆盖低优先级的配置
引入外部配置文件信息
和传统的ssm的方式一样,通过@value的注解去获取properties/yml文件中的内容 如果在yml文件中需要编写大量的自定义的配置,并且具有统一的前缀时,可以采用下方方式
@ConfigurationProperties(prefix = "aliyun")
@Component
@Data
public class AliyunProperities {
private String xxxx;
...
}
aliyun:
xxxx: xxxxxxxx
...
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</dependency>
最后更新于
这有帮助吗?