![c08d4fc0b9c8a57a85f2d07c024cb58f.png](https://img-blog.csdnimg.cn/img_convert/c08d4fc0b9c8a57a85f2d07c024cb58f.png)
前言:之前发的文章评论中,很多小伙伴说希望我写一篇关于Spring Boot + validation + AOP 请求参数校验的文章,以便于各位小伙伴更好的学习(哈哈哈,说不上学习,当作个参考也是蛮好的)。咱们话不多说,直接上干货。
![ef0181c6a58d070a5db7e8c3af76c5a7.png](https://img-blog.csdnimg.cn/img_convert/ef0181c6a58d070a5db7e8c3af76c5a7.png)
一、validation 校验注解通用
- @Null 被注释的属性必须为 null
- @NotNull被注释的属性必须不为 null
- @AssertTrue 被注释的属性必须为 true
- @AssertFalse 被注释的属性必须为 false
字符串/数组/集合检查:(字符串本身就是个数组)
- @Pattern(regexp="reg") 验证字符串满足正则
- @Size(max, min) 验证字符串、数组、集合长度范围
- @NotEmpty 验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0)
- @NotBlank 验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty,@NotBlank只应用于字符串且在比较时会去除字符串的空格
数值检查:同时能验证一个字符串是否是满足限制的数字的字符串
- @Min(value) 被注释的属性必须是一个数字,其值必须大于等于指定的最小值
- @Max(value) 被注释的属性必须是一个数字,其值必须小于等于指定的最大值
- @DecimalMin(value) 被注释的属性必须是一个数字,其值必须大于等于指定的最小值
- @DecimalMax(value)被注释的属性必须是一个数字,其值必须小于等于指定的最大值
- @Size(max=, min=) 被注释的属性的大小必须在指定的范围内
- @Digits(integer, fraction) 被注释的属性必须是一个数字,其值必须在可接受的范围内
- @Pattern(regex=,flag=) 被注释的属性必须符合指定的正则表达式
日期检查:Date/Calendar
- @Past 限定一个日期,日期必须是过去的日期
- @Future 限定一个日期,日期必须是未来的日期
Hibernate Validator 附加的 constraint
- @Email 被注释的属性必须是电子邮箱地址
- @Length(min=,max=)被注释的字符串的大小必须在指定的范围内
- @Range(min=,max=,message=) 被注释的属性必须在合适的范围内
二、依赖
代码展示如下
<!-- 包含有 validation 依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- aop 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
三、代码实例
1.SpmkApproveSummaryDto.java 用 validation 校验
代码展示如下:
import java.util.List;
import javax.validation.constraints.DecimalMax;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Not