@Validated 校验对象中引用对象的属性
1. 众所周知@Validated 和@Valid 可以对接口入参的属性进行校验
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | @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的某一个属性是否符合某一个规范我们就可以这样写
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | //学校实体 @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) {} |
了解了这两个注解之后就明白了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | //学校实体 @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属性进进行校验!
呼!!!! 打完收工!!!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话