title: Springboot 参数校验date: 2022-02-21 17:01:33

安装环境及版本:

  • springboot:2.2.6
  • jdk: 11

一 @Validated和@Valid区别

  • 分组

    @Validated支持,@Valid不支持

  • 注解地方

    @Validated:可以用在类型、方法和方法参数上。但是不能用在成员属性(字段)上

@Valid:可以用在方法、构造函数、方法参数和成员属性(字段)上

  • 嵌套校验

    1. @Data
    2. public class Test{
    3. @NotNull
    4. private Integer osType;
    5. @Valid//用于嵌套验证
    6. private List<ListDTO> item;
    7. @Data
    8. public static class ListDTO {
    9. @NotNull
    10. private String name;
    11. }
    12. }

@Validated和@Valid直接加在controller方法参数前,都不会自动对参数进行嵌套验证

如上,item 必须加 @Valid 才能嵌套校验 name

二 校验注解

  • @NotNull
    #适用于基本数据类型(Integer,Long,Double等等),不能为null,但可以为empty
    (""," ","   ")
    
  • @NotEmpty
    #适用于 String、Collection集合、Map、数组等等,不能为null,而且长度必须大于0
    (" ","  ")
    
  • @NotBlank
    #只能作用在String上,不能为null,而且调用trim()后,长度必须大于0
    ("test")    即:必须有实际字符