0x01:Spring Validation 验证框架
Spring Validation 验证框架对参数的验证机制提供了@Validated (Spring's JSR-303 规范,是标准 JSR-303 的一个变种),javax 提供了@Valid(标准 JSR-303 规范),配合 BindingResult 可以直接提供参数验证结果。其中对于字段的特定验证注解,比如 @NotNull。
两者在检验 Controller 的入参是否符合规范时,使用@Validated 或者 @Valid 在基本验证功能上没有太多区别。但是在分组、注解地方、嵌套验证等功能上两个有所不同:
@Validated
分组:提供分组功能,可在入参验证时,根据不同的分组采用不同的验证机制。
可注解位置:可以用在类型、方法和方法参数上。但是不能用在成员属性上
嵌套验证:用在方法入参上无法单独提供嵌套验证功能;不能用在成员属性上;也无法提供框架进行嵌套验证;能配合嵌套验证注解 @Valid 进行嵌套验证。
@Valid
分组:无分组功能
可注解位置:可以用在方法、构造函数、方法参数和成员属性上(两者是否能用于成员属性上直接影响能否提供嵌套验证的功能)
嵌套验证:用在方法入参上无法单独提供嵌套验证功能;能够用在成员属性上,提示验证框架进行嵌套验证;能配合嵌套验证注解@Valid进行嵌套验证。
0x02:简单集成
pom.xml 文件添加如下依赖
创建 Cotroller
主要在参数中添加 @Validated 注解,然后使用的 JSON 格式数据提交
创建参数 Vo 类
BaseVo.java
UserQueryVo.java
主要在查询条件字段添加注解 @NotEmpty,标识不能为空
创建启动引导类
测试验证
请求参数
如果为空,则验证不过;如果不为空,则验证通过
0x03:分组验证
controller 增加添加用户和修改用户接口
关键代码
@Validated(value=)
@Validated(value=)
进行了分组校验
UserDto 对象代码
测试验证
添加用户
更新用户
如有id参数
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.