在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;
}
从使用上看