本文主要是介绍spring boot中数据验证validated的使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前言
spring-boot中在Controller层里面可以用@validated来校验数据再进入业务逻辑层,如果数据异常则会统一抛出异常,方便异常中心统一处理。
比如,我们判断一个输入的用户名长度限制以及密码的正则验证.
使用流程
1.Controller层数据使用@validated注解
@PostMapping("/userLogin")
@ResponseBody
public TResult login(@RequestBody(required=true) @Validated User user) {return accountServiceInter.login(user);}
}
2 然后在model上声明需要被校验的字段
@Pattern(regexp = "^[a-zA-Z0-9_]{4,16}$", message = "用户名必需4-16位")private String username;//用户密码@Pattern(regexp ="^[a-zA-Z0-9_]{6,16}$", message = "用户名必需6-16位")private String password;
3.全部异常捕获
/*** 处理所有接口数据验证异常* @param e* @return*/@ExceptionHandler(MethodArgumentNotValidException.class)@ResponseBodypublic TResult handleValidException(MethodArgumentNotValidException e) {logger.error("程序验证错误",e);TResult tResult = TResultEncap.setErrResult(ReturnCodeBase.ERR6000);tResult.setErrMsg(e.getBindingResult().getAllErrors().get(0).getDefaultMessage());return tResult;}
当输入不能满足条件是,就会抛出异常,而后统一由异常中心处理,推荐这种方式
也可以用BindingResult,但是用了这个后就必须手动处理异常,侵入了正常的逻辑过程。
常用注解类型
@AssertFalse 校验false
@AssertTrue 校验true
@DecimalMax(value=,inclusive=) 小于等于value,
inclusive=true,是小于等于
@DecimalMin(value=,inclusive=) 与上类似
@Max(value=) 小于等于value
@Min(value=) 大于等于value
@NotNull 检查Null
@Past 检查日期
@Pattern(regex=,flag=) 正则
@Size(min=, max=) 字符串,集合,map限制大小
@Validate 对po实体类进行校验
嵌套校验
如果一个类中包含了另外一个实体类,那么在上面加上@Validated即可,比如下面的
public class Student{ @validatedprivate List< User>studentList;}
这篇关于spring boot中数据验证validated的使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!