用注解进行参数校验,spring validation介绍、使用、实现原理分析

spring validation是什么

在平时的需求开发中,经常会有参数校验的需求,比如一个接收用户注册请求的接口,要校验用户传入的用户名不能为空、用户名长度不超过20个字符、传入的手机号是合法的手机号格式等等。遇到这种情况很多人会在controller接口中去写一些判断代码。但是如果我们又提供了一个修改用户信息的接口,这个接口也需要对用户的参数进行校验,那么我们的校验代码就会散落在两个地方,和真正的业务处理逻辑耦合在一起,而且如果未来要新增一种校验逻辑也需要在修改多个地方。

spring validation允许通过注解的方式来定义对象校验规则,把校验和业务逻辑分离开,让代码编写更加方便。

例如我们定义了一个UserRegisterParam类,并且给username和age字段加上了javax.validation包中的已有的一些validation注解。

@Data
class UserRegisterParam {
    @NotBlank
    @Size(min = 1, max = 20)
    private String username;
    @Min(1)
    private int age;
}

然后在一个Controller的RequestMapping方法中,我们定义这个类为方法入参,并且给这个参数加上@Valid注解

@RequestMapping("/register")
public Object register(@Validated UserRegisterParam param) {
    // 正常处理逻辑
}

如果这个请求的参数不符合UserRegisterParam类中定义的validation

你可能感兴趣的:(深入掌握Java面试问题,互联网大厂工作,成长,晋升之路,java,开发语言,后端)