前言
在日常开发中,避不开的就是参数校验,有人说前端不是会在表单提交之前进行校验的吗?在后端开发中,不管前端怎么样校验,后端都需要进行再次校验,这是为了系统安全。因为前端的校验很容易被绕过,当使用 PostMan 来测试时,如果后端没有校验,容易引发安全问题。值得一提的是,本文适用于 Spring Boot 与 Spring Cloud 项目。
JSR303 简介
JSR-303 是 JAVA EE 6 中的一项子规范,叫做 Bean Validation
,官方的参考实现是 Hibernate Validator。值得一提的是,Hibernate Validator 提供了 JSR-303 规范中所有内置 Constraint 的实现,除此之外还有一些附加的 Constraint。
常用约束注解
约束注解的名称 | 约束注解的说明 |
---|
@Null | 用于校验对象为 Null |
@NotNull | 用于校验对象不能为 Null,无法校验长度为 0 的字符串 |
@NotBlank | 用于校验 String 类,不能为 Null,且 trim() 之后的 size 大于零 |
@NotEmpty | 用于校验集合类、String 类不能为 Null,且 size 大于零,但是带有空格的字符串校验不出来 |
@Size | 用于校验对象(Array、Collection、Map、String)长度是否在给定的范围之内 |
@Length | 用于校验 String 对象的大小必须在指定的范围内 |
@Pattern | 用于校验 String 对象是否符合正则表达式的规则 |
@Email | 用于校验 String 对象是否符合邮箱格式 |
@Min | 用于校验 Number 和 String 对象是否大等于指定的值 |
@Max | 用于校验 Number 和 String 对象是否小等于指定的值 |
@AssertTrue | 用于校验 Boolean 对象是否为 true |
@AssertFalse | 用于校验 Boolean 对象是否为 false |