⽇常项⽬开发中,对于前端提交的表单,后台接⼝接收到表单数据后,为了程序的严谨性,通常后端 会加⼊业务参数的合法校验操作来避免程序的⾮技术性 bug,这⾥对于客户端提交的数据校验, SpringBoot 通过 spring-boot-starter-validation 模块包含了数据校验的⼯作。 这⾥主要介绍 Spring Boot 中对请求数据进⾏校验,相关概念如下 JSR303 :JSR303 是⼀项标准,只提供规范不提供实现,规定⼀些校验规范即校验注解,如 @Null,@NotNull,@Pattern,位于 javax.validation.constraints 包下。JSR-349 是其升级版本,添加 了⼀些新特性。 Hibernate Validation :Hibernate Validation 是对这个规范的实现,并增加了⼀些其他校验注解,如 @Email,@Length,@Range 等等。 Spring Validation :Spring Validation 对 Hibernate Validation 进⾏了⼆次封装,在 Spring MVC 模块中 添加了⾃动校验,并将校验信息封装进了特定的类中。
实现参数校验,程序必须引⼊ spring-boot-starter-validation 依赖,只是在引⼊ spring-boot-starter-web 依赖时,该模块会⾃动依赖 spring-boot-starter-validation,所以程序中引⼊ spring-boot-starter-web 会⼀ 并依赖spring-boot-starter-validation 到项⽬中.
@AssertFalse 可以为null,如果不为null的话必须为false
@AssertTrue 可以为null,如果不为null的话必须为true
@DecimalMax 设置不能超过最⼤值
@DecimalMin 设置不能超过最⼩值
@Digits 设置必须是数字且数字整数的位数和⼩数的位数必须在指定范围内
@Future ⽇期必须在当前⽇期的未来
@Past ⽇期必须在当前⽇期的过去
@Max 最⼤不得超过此最⼤值
@Min 最⼤不得⼩于此最⼩值
@NotNull 不能为null,可以是空
@Min 最⼤不得⼩于此最⼩值
@Pattern 必须满⾜指定的正则表达式
@Size 集合、数组、map等的size()值必须在指定范围内
@Email 必须是email格式
@Length ⻓度必须在指定范围内
@NotBlank 字符串不能为null,字符串trim()后也不能等于“”
@NotEmpty 不能为null,集合、数组、map等size()不能为0;字符串trim()后可以等于“”
@Range 值必须在指定范围内
@URL 必须是⼀个URL