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