接口校验

接口校验

参考

参考链接
参考链接-自定义校验

优势

省去大量的校验代码

技术选型

jakarta.validation-api
@Validated(spring-context包的)和@Valid结合使用

@Validated和@Valid区别

Spring Validation验证框架对参数的验证机制提供了@Validated(Spring’s JSR-303规范,是标准JSR-303的一个变种),javax提供了@Valid(标准JSR-303规范),配合BindingResult(方法参数写上自动映射)可以直接提供参数验证结果

  • 分组
    @Validated:提供了一个分组功能,可以在入参验证时,根据不同的分组采用不同的验证机制
    groups是验证分组,比如我有的验证只有更新的时候做,有的只有添加的时候做,就用这个
    javax.validate里有提供一个默认分组Default.class是个接口,不指定分组时都会执行这个,分组是个空的接口
    接口可以采用xxxAdd/xxxUpdate
  • 注解位置
    @Valid:可以用在方法、构造函数、方法参数和成员属性(字段)上
    @Validated:可以用在类型、方法和方法参数上。但是不能用在成员属性(字段)上
//用在方法上
@Validated(Default.class)
public interface HelloService {
    Object hello(@NotNull @Min(10) Integer id, @NotNull String name);
}
  • 嵌套参数验证
    @Valid支持嵌套参数验证(验证实体中的其他需要被验证的对象集合或其他对象)

总结用法

  • controller 方法参数中用@Validated(分组考虑使用) 嵌套使用 @Valid
  • 单个参数(非嵌套) 校验可以在 controller 的类上加 参数可不用加
  • MethodArgumentNotValidException 全局异常处理类封装参数返回
  • 自定义校验规则 自定义注解加自定义Validator(xxxValidator)如图
    在这里插入图片描述
  • 注解使用
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值