@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属性进进行校验!
呼!!!! 打完收工!!!

浙公网安备 33010602011771号