JSR303数据检验
如何使用
Springboot中可以用**@validated**来校验数据,如果数据异常则会统一抛出异常,方便异常中心统一处理。我们这里来写个注解让我们的name只能支持Email格式;
@Component //注册bean
@ConfigurationProperties(prefix = "person")
@Validated //数据校验
public class Person {
@Email(message="邮箱格式错误") //name必须是邮箱格式
private String name;
}
使用数据校验,可以保证数据的正确性
常见数据检验注解
@NotNull(message="名字不能为空")
private String userName;
@Max(value=120,message="年龄最大不能查过120")
private int age;
@Email(message="邮箱格式错误")
private String email;
空检查
@Null 验证对象是否为null
@NotNull 验证对象是否不为null, 无法查检长度为0的字符串
@NotBlank 检查约束字符串是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格.
@NotEmpty 检查约束元素是否为NULL或者是EMPTY.
Booelan检查
@AssertTrue 验证 Boolean 对象是否为 true
@AssertFalse 验证 Boolean 对象是否为 false
长度检查
@Size(min=, max=) 验证对象(Array,Collection,Map,String)长度是否在给定的范围之内
@Length(min=, max=) string is between min and max included.
日期检查
@Past 验证 Date 和 Calendar 对象是否在当前时间之前
@Future 验证 Date 和 Calendar 对象是否在当前时间之后
@Pattern 验证 String 对象是否符合正则表达式的规则
.......等等
除此以外,我们还可以自定义一些数据校验规则
多环境切换
profile是Spring对不同环境提供不同配置功能的支持,可以通过激活不同的环境版本,实现快速切换环境
多配置文件
我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml , 用来指定多个环境版本
例如
application-test.yaml 代表测试环境配置
application-dev.yaml 代表开发环境配置
#application-test.yaml
server:
port: 8083
但是Springboot并不会直接启动这些配置文件,它默认使用application.properties(application.yaml)主配置文件;
我们需要通过一个配置来选择需要激活的环境:
#比如在配置文件中指定使用dev环境,我们可以通过设置不同的端口号进行测试;
#我们启动SpringBoot,就可以看到已经切换到test下的配置了;
spring:
profiles:
active: test
这样运行主程序后 只能通过8083端口进行访问
不同环境的配置会合并默认配置后,一起生效。针对默认配置中已存在的项,当前配置的会覆盖。
yaml的多文档块
上面这种实现多个环境切换一般是用于properties的配置文件,使用yaml可以不用去配置多个文件
使用“—”来分割
#选择要激活那个环境块
spring:
profiles:
active: test
---
server:
port: 8081
spring:
profiles: dev #配置环境的名称
---
server:
port: 8083
spring:
profiles: test #配置环境的名称
注意:如果yml和properties同时都配置了端口,并且没有激活其他环境 , 默认会使用properties配置文件的!
配置文件加载位置
如果同时存在properties和yaml两种格式的配置文件同时存在 读取properties格式的配置文件
SpringApplication从application.properties以下位置的文件加载属性并将其添加到Spring中Environment:
一个/config当前目录的子目录(当前项目的config目录下的配置文件)
当前目录(当前项目下的配置文件)
类路径/config包(resources包下的config包的配置文件)
类路径根(resources包下的配置文件)
等价于下面4个访问顺序
file:./config/
(./表示当前目录)file:./
classpath:/config/
classpath:/
该列表按优先级排序(在列表较高位置定义的属性会覆盖在较低位置定义的属性)
当使用来配置自定义配置位置时spring.config.location
,它们将替换默认位置。例如,如果spring.config.location
使用值配置classpath:/custom-config/,file:./custom-config/
,则搜索顺序将变为以下内容:
file:./custom-config/
classpath:custom-config/
或者,当使用来配置自定义配置位置时spring.config.additional-location
,除默认位置外,还会使用它们。在默认位置之前搜索其他位置。例如,如果classpath:/custom-config/,file:./custom-config/
配置了的其他位置,则搜索顺序变为以下内容:
file:./custom-config/
classpath:custom-config/
file:./config/
file:./
classpath:/config/
classpath:/