springboot-如何集成Validation进行参数校验

一、步骤概览

springboot-如何集成Validation进行参数校验

文章插图
 
二、步骤说明1.引入依赖包在 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组件主要功能包括:
  • 支持注解驱动的校验: 使用 JSR-380 提供的注解进行参数校验,例如 @NotNull、@NotBlank、@Size 等 。
  • 对 Controller 方法参数的校验支持: 在 Controller 的方法参数上使用 @Valid 注解,触发参数校验 。
  • 定制化校验错误信息: 支持自定义校验错误信息,使得校验失败时能够返回友好的错误提示 。
  • 校验结果处理: 在校验失败时,将校验结果存储在 BindingResult 对象中 , 方便开发者获取校验错误信息进行处理 。
  • 集成 Hibernate Validator: 基于 Hibernate Validator 实现参数校验,支持丰富的校验功能,如自定义校验器、分组校验等 。
2.使用校验注解在实体类上添加对应校验的注解,如@NotEmpty,@NotNull,@Max等 。使用实例如下所示:
springboot-如何集成Validation进行参数校验

文章插图
 
可使用的注解列表如下所示:
  • @NotNull:被注释的元素必须不为 null 。适用于所有类型 。
  • @NotBlank:被注释的字符串必须非空且长度大于 0(去掉两端空白字符后) 。
  • @NotEmpty:被注释的字符串、集合、Map 或数组必须非空 。
  • @Size:被注释的元素的大小必须在指定范围内 。
  • @Min :被注释的元素的值必须大于或等于最小值 。
  • @Max:被注释的元素的值必须小于或等于最大值 。
  • @DecimalMin:被注释的元素的值必须大于或等于最小值 。
  • @DecimalMax:被注释的元素的值必须小于或等于最大值 。
  • @EmAIl:被注释的元素必须是一个合法的电子邮件地址 。
  • @Pattern:被注释的字符串必须符合指定的正则表达式 。
  • @AssertTrue:被注释的元素必须为 true 。
  • @AssertFalse:被注释的元素必须为 false 。
  • @Future:被注释的日期必须是未来的 。
  • @FutureOrPresent:被注释的日期必须当前或未来的 。
  • @Past :被注释的日期必须是过去的 。
  • @PastOrPresent:被注释的日期必须是当前或过去的 。
3.处理绑定异常如果我们程序中使用了参数校验 , 当参数校验不通过 , 接口返回至前端的格式并不是我们统一定义的格式,我们需要将参数校验的异常处理并按照统一格式返回至前端,我们可以定义全局的异常处理器来统一处理 。处理示例如下所示:
springboot-如何集成Validation进行参数校验

文章插图
 
4.控制层启用校验在实体类上添加校验注解,这只是定义了校验规则,并没有真正启用,在 Controller 方法上还需要使用 @Valid 或 @Validated注解启用校验 。使用示例如下图所示:
springboot-如何集成Validation进行参数校验

文章插图
 
其中@Valid 注解和@Validated注解还是有点区别的,区别如下所示,我们在使用时,可根据其特性按需使用 。
区别
@Valid
@Validated
适用范围
方法参数、方法返回值、字段和方法级别
方法参数和方法返回值
验证顺序
会递归地校验参数对象的属性
不会递归地校验参数对象的属性
分组校验
不支持分组校验
支持分组校验
验证器选择
默认使用 JAVA 标准的 Bean Validation(JSR 380)规范的验证器,例如 Hibernate Validator
使用 Spring 的验证器,例如 Spring Validator
三、测试结果测试如图所示:
springboot-如何集成Validation进行参数校验

文章插图
 
返回的信息按照统一的格式返回,并提示我们哪个参数校验失败 。


推荐阅读