在实际开发中,我们经常会遇到接口数据校验的问题。例如在用户输入手机号、或者是身份证号的时候,我们就需要校验手机号或者身份证号是否输入正确。当然这样的校验在前端页面输入的时候就可以完成。
但是对于直接调用接口的情况则不能通过调用方来进行判断,这就需要我们在Spring Boot中整合对应的校验规则。而在我们Java中经常用到的校验规则就是JSR-303校验规则,下面我们就来看看如何在Spring Boot中整合校验规则。
JSR-303简介
JSR-303规则是 JAVA EE 6 中的一项子规范,叫做 Bean Validation,官方参考实现是Hibernate Validator,这个实现与Hibernate ORM 没有任何关系。JSR 303 用于对 Java Bean 的字段值进行验证。Spring MVC 3.x 之中也大力支持 JSR-303,可以在控制器中对表单提交的数据方便地验证。也可以通过使用注解的方式进行验证。
那么在Spring Boot中如何使用呢?
添加对应的依赖
这里需要注意的是这个验证规则的引入是在Spring Boot中默认引入的所以在这里不需要指定版本号就可以使用了
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
添加好规则starter之后,下面我们就来看一下这个校验规则为我们提供了那些注解以便我们更加快捷高效地使用。
JSR 303 基本的校验规则
空检查
- @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 对象是否在当前时间之后 ,验证成立的话被注释的元素一定是一个将来的日期
- @Patter