JSR303数据校验
简介 JSR是Java Specification Requests的缩写,意思是Java 规范提案。是指向JCP(Java Community Process)提出新增一个标准化技术规范的正式请求。任何人都可以提交JSR,以向Java平台增添新的API和服务。JSR已成为Java界的一个重要标准。
作用:使用JSR303检验,可以保证数据的正确性
使用步骤
- 在类上添加
@Validated,开启JSR303校验 - 在你要进行检验的数据上添加注解,常用的参数,我放在下面了
常用参数
@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 对象是否符合正则表达式的规则
.......等等
除此以外,我们还可以自定义一些数据校验规则
来个小实验证明一下 实体类
package com.example.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import org.springframework.validation.annotation.Validated;
import javax.validation.constraints.Email;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
@ConfigurationProperties(prefix = "e")
@Validated
public class EmailTest {
@Email(message = "输入错误")
private String msg;
private Integer id;
}
application.yaml配置
e:
msg: asdasda
id: 2
**注意点:**如果application.yaml配置中有配置多余的配置,属性注入的配置一定要放在最前面,不然属性会配置不了,会为null。
测试类
package com.example;
import com.example.pojo.EmailTest;
import com.example.pojo.People;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class Springboot02ConfigApplicationTests {
@Autowired
EmailTest email;
@Test
void contextLoads() {
System.out.println(email);
}
}
测试结果:
多环境配置
yaml的多文档块
server:
port: 8080
#选择要激活的环境
spring:
profiles:
active: dev #要激活的环境的名称
---
server:
port: 8081
spring:
profiles: dev # 配置环境的名称
---
server:
port: 8082
spring:
profiles: test # 配置环境的名称
注意点:如果yml和properties同时都配置了端口,并且没有激活其他环境 , 默认会使用properties配置文件的!即properties的优先级高于yaml
配置文件加载的位置(4个)
优先级关系:图中序号所标注
优先级1:项目路径下的config文件夹配置文件
优先级2:项目路径下配置文件
优先级3:资源路径下的config文件夹配置文件
优先级4:资源路径下配置文件
拓展
我们还可以通过spring.config.location来改变默认的配置文件位置