用法:
public interface UserService {
public UserModel get2( Integer uuid) ;
}
@Validated //① 告诉MethodValidationPostProcessor此Bean需要开启方法级别验证支持
@Component
public class UserServiceImpl implement UserService {
public @NotNull UserModel get2(@NotNull @Min(value = 1) Integer uuid) { //②声明前置条件/后置条件
//获取 User Model
UserModel user = new UserModel(); //此处应该从数据库获取
if(uuid > 100) {//方便后置添加的判断(此处假设传入的uuid>100 则返回null)
return null;
}
return user;
}
}
<!--注册方法验证的后处理器-->
<bean class="org.springframework.validation.beanvalidation.MethodValidationPostProcessor"/>
@Valid 和 @Validated 的区别
在spring 项目中,这两个注解的功能比较类似,都可以实现对参数的校验功能,但是两者在用法上还有一些区别;
1 使用位置
@Validated 使用位置一般在需要验证方法的类上,表示该类下所有需要参数校验的方法,进行参数校验,使用bean上;
@Valid 一般使用在方法参数实体类参数前面,校验规则对应为该参数修饰的实体类各个属性字段上;
@RestController
@Validated
public class BaseCommandController{
@PostMapping("/****")
public void BasePostMapping(@Valid Query query){
return ;
}
}
@Data
Class Query{
@Min(value =2, message = "最小值id为2")
private Integer id;
@Size( min = 1, max = 8, message = "名字长度范围为1~8")
private String name;
}
当参数较多的时候,一般将参数封装为一个request类,当参数较少的时候,也可以直接进行方法前使用校验限注释;