@Validated 校验对象中引用对象的属性

1. 众所周知@Validated 和@Valid 可以对接口入参的属性进行校验

 

@Valid与@Validated都是用来校验接收参数的。
 
@Valid是使用Hibernate validation的时候使用
 
@Validated是只用Spring Validator校验机制使用
 
说明:java的JSR303声明了@Valid这类接口,而Hibernate-validator对其进行了实现。
 
 
 
@Validated与@Valid区别:
 
@Validated:可以用在类型、方法和方法参数上。但是不能用在成员属性(字段)上,不支持嵌套检测
@Valid:可以用在方法、构造函数、方法参数和成员属性(字段)上,支持嵌套检测\
 
 
 
注意:SpringBoot使用@Valid注解需要引入如下POM
 
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-validation</artifactId>
</dependency>

 

 默认了解以上的区别之后,就已经很容易了,我们要做的正式嵌套的检测,比如我有一个对象school 组合了一个对象class,想要去校验class的某一个属性是否符合某一个规范我们就可以这样写

//学校实体
@Data
public class School {
    String schoolName;

    //如何校验student的name是否符合规范
    Student student;

}

//学生实体
@Data
public class Student {

    String name;
    String age;

}


//接口校验
 @PostMapping("list")
    public void list(@Validated School school) {}

 

了解了这两个注解之后就明白了

//学校实体
@Data
public class School {
    String schoolName;

    //如何校验student的name是否符合规范 
    //这里使用@Valid注解
    @Valid
    Student student;

}

//学生实体
@Data
public class Student {
    //这里写上哪写属性需要被校验 比如name要求非空
    @NotBlank(message = "name非空")
    String name;
    String age;

}

 然后接口上在使用@Validated 对School对象进行校验,同时也能对它的引用对象school对象的name属性进进行校验!

 

 

呼!!!! 打完收工!!!

 

  

posted @ 2022-09-15 14:51  少侠砍人不用刀  阅读(1664)  评论(0编辑  收藏  举报