@Validated工作原理 与 Spring Validator 与 JSR-303 Bean Validation @javax.validation.Valid 之间的关系

本文探讨了Java校验中的JSR303 Bean Validation规范,重点分析了Hibernate Validator作为其实现。同时,文章深入研究了Spring中的@Valid和@Validated注解,以及它们如何与Spring Validation模块配合工作。在Spring的执行流程中,解析请求参数并调用Validator进行校验。SpringValidatorAdapter作为适配器,实现了javax.validation.Validator和Spring的SmartValidator接口,确保了两者之间的兼容性。
摘要由CSDN通过智能技术生成

在Java校验中,为了简化开发,JavaEE 6 中有一项子规范JSR303,叫做Bean Validator,其中

Hibernate Validator 是 Bean Validation 的参考实现 . Hibernate Validator 提供了 JSR 303 规范中所有内置 constraint 的实现,除此之外还有一些附加的 constraint。

Spring也提供了@Valid 和 @Validated两个注解来实现验证功能,在Spring Validation中分成了以下几个模块。

org.springframework.validation 提供数据绑定和验证功能,用于业务层和/或UI层。
org.springframework.validation.annotation

基于注解形式的支持类

org.springframework.validation.beanvalidation 用于将JSR-303bean验证提供程序(如Hibernate Validator)集成到Spring ApplicationContext中的支持类,特别是与Spring的数据绑定和验证API集成的支持类。
org.springframework.validation.support 用于处理验证结果的支持类。

使用以及源码阅读:

使用:

@RestController
@RequestMapping("/index")
public class IndexController {
@PostMapping("/test")
    public IMOOCJSONResult sixNewItems (@Validated Orders orders, BindingResult bindingResult){
        if (bindingResult.hasErrors()) {
            List<ObjectError> errorList = bindingResult.getAllErrors();
            for (ObjectError error : errorList) {

                System.out.println(error.getCode()+" msg="+ error.getDefaultMessage());
            }
            return null;
        }
        return IMOOCJSONResult.ok(true);
    }
}
@Data
public class Orders {
    /**
     * 订单主键 同时也是订单编号
     */
    @Id
    private String id;

    /**
     * 用户id
     */
    @NotNull
    @Column(name = "user_id")
    private String userId;

    @Valid
    private List<OrderStatus> orderStatusList;
}

从使用上看

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值