前言:
开发中我们会遇到多个接口公用一个请求对象的情况,如果需求变更,势必会破坏已有代码的逻辑,不符合开闭原则,对参数校验修修补补,不如一开始就划分明确,所以在这里记录下分组校验注解@validated的使用。
测试过程:
新建一个spri空穴来风什么意思ngboot
项目,新建module -> 引入依赖 -> 编写主启动类 -> 编写配置文件 -> 新建各种包
validated
有自己默认的组 default.class
我们要建的组,就是不同业务使用字段分成的组,举例的业务是一个用户对象,用户有不23秒32年同的角色,不同的接口会用到这个用户对象的不同字段。比如学生(student)
,老师(teacher):
student
public interface student {}
teacher
public interface 吴建豪电影teacher {}
我们的业务是多个接口共用一个请求对象,所以不同接口用到这个对象里的字段一定不同。所以在这里对不同的字段作了分组,比如:
老师肯定会有手机号、手下也一定有几个学生,所以被划分到teacher组;学生一定要有几本书,所以被划分到student
组;没有被分组的字段默认是default组;给所有字段用校验注解添加校验,以便测试是否分组生效。urdto
@datapublic class urdto { @notblank(message = "id必传") private string id; @notblank(message = "不能没有名称") private string name; @notblank(message = "老师不能没有手机号", groups = teacher.class) private string phone; @notnull(message = "age必传") private integer age; @notblank(message = "不能没有idcard") private string idcard; @notempty(message = "学生不能没有书") @size(min = 2, message = "学生必须有两本书", groups = student.class) private list<string> booknames; @notempty @size(min = 1, message = "老师不能没有学生", groups = teacher.class) private list<string> studentnames;}
对这个对象的不同业务划分出5个接口,测试下字段分组之后的必传情况: 这样看的清楚些
controller
@restcontrollerpublic class validatedcontroller { /** * 测试 分组校验 student * * @date 2022/2/11 15:47:14 */ @postmapping("student") public urdto validatedstudent(@validated(value = {student.class, default.class}) @requestbody urdto urdto) { return urdto; } /** * 测试 分组校验 teacher * * @date 2022/2/11 15:47:14 */ @postmapping("teacher") public urdto validatedteacher(@validated(value = {teacher.class, default.class}) @requestbody urdto urdto) { return urdto; } /** * 测试 分组校验 default * * @date 2022/2/11 15:47:14 */ @postmapping("default") public urdto validateddefault(@validated(value = {default.class}) @requestbody urdto urdto) { return urdto; } /** * 测试 分组校验 o线上英语机构nlystudent * * @date 2022/2/11 15:47:14 */ @postmapping("onlystudent") public urdto validatedonlystudent(@validate2022年快递停运时间d(value = {student.class}) @requestbody urdto urdto) { return urdto; } /** * 测试 分组校验 onlyteacher * * @date 2022/2/11 15:47:14 */ @postmapping("onlyteacher") public urdto validatedonlyteacher(@validated(value = {teacher.class}) @requestbody urdto urdto) { return urdto; }}
对 student
、teacher
、default
、onlystudent
、onlyteacher
进行测试
不需要列举所有情况,这里就用student
接口做测试。这个接口如果不传递student组的booknames字段或者booknames字段长度不足 2 就会抛出异常,但是因为分组的缘故,即使不传递teacher group
的字段也不会受到影响。
不传booknames
只传递一个booknames
其它接口例子我就不多说了,因为没有显式分组的默认都是default组,所以,测试接口里面有default组的测试,就是默认没有分组的属性都归default管理;
测试用例中的only这两个组,就是在没有default的情况下,只对student和teacher 组的字段进行校验;
要注意平常我们写@validated
注解的时候,默认就是@validated(group = {default.class}),
也就是默认所有字段都是default
组的,显式分组之后,剩下的那些没有被划分到自建组的字段都是default组;
因为这种机制的出现所以我们可以很灵活的使用对象里面的某些字段,比如可以新建一个master组,可以将student和teacher组的字段都划分到master组,以实现类似于高权限等级的参数传递校验等等操作!
到此这篇关于java validated 分组校验的使用的文章就介绍到这了,更多相关java validated 分组校验内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!
本文发布于:2023-04-05 00:47:23,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/316630dd19d49146349e8694c23538a4.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:Java Validated 分组校验的使用.doc
本文 PDF 下载地址:Java Validated 分组校验的使用.pdf
留言与评论(共有 0 条评论) |