前言
Spring框架的 validator 组件,是个辅助组件,在进行数据的完整性和有效性非常有用,通过定义一个某个验证器,即可在其它需要的地方,使用即可,非常通用。
应用在执行业务逻辑之前,必须通过校验保证接受到的输入数据是合法正确的,但很多时候同样的校验出现了多次,在不同的层,不同的方法上,导致代码冗余,浪费时间,违反DRY原则。
每一个控制器都要校验
过多的校验参数会导致代码太长
代码的复用率太差,同样的代码如果出现多次,在业务越来越复杂的情况下,维护成本呈指数上升。
可以考虑把校验的代码封装起来,来解决出现的这些问题。
JSR-303
JSR-303是Java为Bean数据合法性校验提供的标准框架,它定义了一套可标注在成员变量,属性方法上的校验注解。
Hibernate Validation提供了这套标准的实现,在我们引入Spring Boot web starter或者Spring boot starter validation的时候,默认会引入Hibernate Validation。
用法实例
说了这么多废话,上代码。
1、引入SpringBoot项目
org.springframework.boot
spring-boot-starter-web
org.hibernate.validator
hibernate-validator
org.projectlombok
lombok
2、编写校验对象
@Data
public class User {
// 名字不允许为空,并且名字的长度在2位到30位之间
// 如果名字的长度校验不通过,那么提示错误信息
@NotNull
@Size(min=2, max=30,message = "请检查名字的长度是否有问题")
private String name;
// 不允许为空,并且年龄的最小值为18
@NotNull
@Min(18)
private Integer age;
}
3、创建控制器
@SpringBootApplication
@RestController
public class UserApplication{
public static void main(S