本文介绍在Spring Boot中实现对请求的数据进行校验。数据校验常用到概念:
• JSR303/JSR-349: JSR303是一项标准,只提供规范不提供实现,规定一些校验规范即校验注解,如@Null,@NotNull,@Pattern,位于javax.validation.constraints包下。JSR-349是其的升级版本,添加了一些新特性。
• hibernate validation:hibernate validation是对这个规范的实现,并增加了一些其他校验注解,如@Email,@Length,@Range等等
• spring validation:spring validation对hibernate validation进行了二次封装,在springmvc模块中添加了自动校验,并将校验信息封装进了特定的类中
本文主要包括如下内容:
• 演示 spring boot validation 校验功能 + 自定义校验注解 + 统一异常处理 。
一:准备工作
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
项目架子:
二:校验规则
2.1 使用原生注解-swagger注解可以忽略
entity中实体代码
其中 @FlagValidator(values = “1,2,3”) 和 @PhoneValidator 是自定义校验注解,自定义过程后面说。
其余注解都是自带的,关于自带注解有哪些,见文末的常用标签含义。
@Data
public class UserEntity implements Serializable {
@NotEmpty(message = "姓名不能为空")
private String name;
@Min(value = 18 ,message = "未满18周岁请自觉离开。。。")
@Max(value = 60,message = "您老身体可还吃得消?大于60岁自觉离开。")
private int age;
@Min(value = 666,message = "钱包够憋,不够¥666请自觉充值。")
private double money;
@FlagValidator(values = "1,2,3")
private String flag;
@Email(message = "请输入正确格式的邮箱。。")
@NotEmpty(message = "邮箱不能为空哦!")
private String email;
@PhoneValidator
private String phone;
}
校验对象:在Controller 中请求参数上添加@Validated ,在对应的实体字段上加校验注解即可。
@Api("UserController层")
@RequestMapping(value = "/UserController")
@RestController
public class UserController {
@ApiOperation(value = "向user表插入数据")
@PostMapping(value = {
"/insetUser/"})
public ResultMsg<UserEntity> insertUser(@Validated @RequestBody UserEntity userEntity) {
return new ResultMsg<UserEntity>("0000", "success", userEntity