spring @validated校验,分组校验,自定义校验

借助了spring的力量之后,原先臃肿的if - else没有了,代码瞬间变的简洁了起来。但是这样子也是有一些问题的,比如我们现在要在Controller中新增添一个修改user的接口,既然是修改接口,我们可以选择只修改user的name或者只修改user的enname。那么就会出现一个问题,新增接口的校验和修改接口的校验冲突了。新增接口要求:name和enname都不能为空,修改接口要求:name和enname可以为空,这个时候用一个user对象就有点尴尬。

@validated 分组校验
 

@Data
public class User {
 
    @Min(value = 1, message = "ID不可为空", groups = {Update.class})
    private int id;
    
    @NotNull(message = "姓名不可为空", groups = {Insert.class})
    private String name;
    
    @NotNull(message = "英文姓名不可为空", groups = {Insert.class})
    private String enname;
    
    private String mobile;
    
}
 
 
@PostMapping("/user")
    public Mono insert(@RequestBody @Validated(Insert.class) User user) {
        // 处理新增逻辑
        return Mono.just("注册成功");
    }
    
    @PutMapping("/user")
    public Mono update(@RequestBody @Validated(Update.class) User user) {
        // 处理修改逻辑
        return Mono.just("修改成功");
    }
 
// 随便自定义2个接口 用于标识新增和修改    
public interface Insert{
    
}
public interface Update{
    
}

多组校验

public class Address {
    @ZipCode.List( {
        @ZipCode(countryCode="fr", groups=Default.class
                 message = "zip code is not valid"),
        @ZipCode(countryCode="fr", groups=SuperUser.class
                 message = "zip code invalid. Requires overriding before saving.")
        } )
    private String zipcode;
}

 

你可能感兴趣的:(spring @validated校验,分组校验,自定义校验)