在 pom.xml 文件中引入 validation 组件,它提供了在 Spring Boot 应用程序中进行参数校验的支持。
<!-- WEB 程序依赖包 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 校验依赖包 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
validation组件主要功能包括:
在实体类上添加对应校验的注解,如@NotEmpty,@NotNull,@Max等。使用实例如下所示:
可使用的注解列表如下所示:
如果我们程序中使用了参数校验,当参数校验不通过,接口返回至前端的格式并不是我们统一定义的格式,我们需要将参数校验的异常处理并按照统一格式返回至前端,我们可以定义全局的异常处理器来统一处理。处理示例如下所示:
在实体类上添加校验注解,这只是定义了校验规则,并没有真正启用,在 Controller 方法上还需要使用 @Valid 或 @Validated注解启用校验。使用示例如下图所示:
其中@Valid 注解和@Validated注解还是有点区别的,区别如下所示,我们在使用时,可根据其特性按需使用。
区别 |
@Valid |
@Validated |
适用范围 |
方法参数、方法返回值、字段和方法级别 |
方法参数和方法返回值 |
验证顺序 |
会递归地校验参数对象的属性 |
不会递归地校验参数对象的属性 |
分组校验 |
不支持分组校验 |
支持分组校验 |
验证器选择 |
默认使用 JAVA 标准的 Bean Validation(JSR 380)规范的验证器,例如 Hibernate Validator |
使用 Spring 的验证器,例如 Spring Validator |
测试如图所示:
返回的信息按照统一的格式返回,并提示我们哪个参数校验失败。