一、基本的校验规则
- 空检查
注解 | 应用 |
---|
@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=) | Validates that the annotated string is between min and max included. |
- 日期检查
注解 | 应用 |
---|
@Past | 验证 Date 和 Calendar 对象是否在当前时间之前,验证成立的话被注释的元素一定是一个过去的日期 |
@Future | 验证 Date 和 Calendar 对象是否在当前时间之后 ,验证成立的话被注释的元素一定是一个将来的日期 |
@Pattern | 验证 String 对象是否符合正则表达式的规则,被注释的元素符合制定的正则表达式,regexp:正则表达式 flags: 指定 Pattern.Flag 的数组,表示正则表达式的相关选项。 |
- 数值检查 (建议使用在Stirng,Integer类型)
注解 | 应用 |
---|
@Min | 验证 Number 和 String 对象是否大等于指定的值 |
@Max | 验证 Number 和 String 对象是否小等于指定的值 |
@DecimalMax | 被标注的值必须不大于约束中指定的最大值. 这个约束的参数是一个通过BigDecimal定义的最大值的字符串表示.小数存在精度 |
@DecimalMin | 被标注的值必须不小于约束中指定的最小值. 这个约束的参数是一个通过BigDecimal定义的最小值的字符串表示.小数存在精度 |
@Digits | 验证 Number 和 String 的构成是否合法 |
@Digits(integer=,fraction=) | 验证字符串是否是符合指定格式的数字,interger指定整数精度,fraction指定小数精度。 |
@Range(min=, max=) | 被指定的元素必须在合适的范围内 @Range(min=10000,max=50000,message=”range.bean.wage”) |
@Valid | 递归的对关联对象进行校验, 如果关联对象是个集合或者数组,那么对其中的元素进行递归校验,如果是一个map,则对其中的值部分进行校验.(是否进行递归验证) |
@CreditCardNumber | 信用卡验证 |
@Email | 验证是否是邮件地址,如果为null,不进行验证,算通过验证。 |
@ScriptAssert(lang= ,script=, alias=) | 断言 |
@URL(protocol=,host=, port=,regexp=, flags=) | url注解 |
二、SpringBoot运用JSR303校验
- 步骤一:导入validation启动器
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
- 步骤二:在我们需要使用的实体类上加上注解:
@Validated
- 步骤三:在属性上加上我们前面的注解校验
- 例子:
Person.java实体类
@Component
@ConfigurationProperties(prefix = "person")
@Validated
public class Person {
@NotEmpty(message = "姓名不能为空")
private String name;
@Min(value = 18,message = "不小于18岁")
private Integer age;
@Email(message = "邮箱格式错误")
private String email;
public Person() {
}
public Person(@NotNull(message = "姓名不能为空") String name, @Min(value = 18, message = "不小于18岁") Integer age, @Email(message = "邮箱格式错误") String email) {
this.name = name;
this.age = age;
this.email = email;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", email='" + email + '\'' +
'}';
}
}
yaml配置文件传入数据:
person:
name:
age: 17
email: 139
运行结果:
报错: