每次咱们在搭建一个开源项目的首要任务包括:项目的统一异常处理、统一结果封装以及作项目的数据校验,在先后端分离的状况下,不只前端须要作数据校验,后端更加须要,前端主要使用一些相似与jQuery Validate等js/css插件实现经过数据校验,好比:bootstrap-validator,然后端主要使用的是Hibernate Validator检验框架,经过数据校验,咱们能避免用户借助一些HTTP请求工具直接向后端发送一些不合法的数据请求,本文将入如何在Spring/Spring Boot下实现后端的数据校验。css
注解 | 用途 |
---|---|
Valid | 递归的对关联的对象进行校验 |
AssertFalse | 用于boolean字段,该字段的值只能为false |
AssertTrue | 用于boolean字段,该字段只能为true |
DecimalMax(value) | 被注释的元素必须是一个数字,只能大于或等于该值 |
DecimalMin(value) | 被注释的元素必须是一个数字,只能小于或等于该值 |
Digits(integer,fraction) | 检查是不是一种数字的(整数,小数)的位数 |
Future | 检查该字段的日期是不是属于未来的日期 |
FutureOrPresent | 判断日期是不是未来或如今日期 |
Past | 检查该字段的日期是在过去 |
PastOrPresent | 判断日期是不是过去或如今日期 |
Max(value) | 该字段的值只能小于或等于该值 |
Min(value) | 该字段的值只能大于或等于该值 |
Negative | 判断负数 |
NegativeOrZero | 判断负数或0 |
Positive | 判断正数 |
PositiveOrZero | 判断正数或0 |
NotNull | 不能为null |
Null | 必须为 null |
Pattern(value) | 被注释的元素必须符合指定的正则表达式 |
Size(max, min) | 检查该字段的size是否在min和max之间,能够是字符串、数组、集合、Map等 |
Length(max, min) | 判断字符串长度 |
CreditCardNumber | 被注释的字符串必须经过Luhn校验算法,银行卡,信用卡等号码通常都用Luhn计算合法性 |
被注释的元素必须是电子邮箱地址 | |
Length(min=, max=) | 被注释的字符串的大小必须在指定的范围内 |
NotBlank | 只能用于字符串不为null,而且字符串trim()之后length要大于0 |
NotEmpty | 集合对象的元素不为0,即集合不为空,也能够用于字符串不为null |
Range(min=, max=) | 被注释的元素必须在合适的范围内 |
SafeHtml | classpath中要有jsoup包 |
ScriptAssert | 要有Java Scripting API 即JSR 223("Scripting for the JavaTMPlatform")的实现 |
URL(protocol=,host=,port=,regexp=,flags=) | 被注释的字符串必须是一个有效的url |
<dependency> <groupId>org.hibernate.validator</groupId> <artifactId>hibernate-validator</artifactId> <version>6.1.0.Final</version> </dependency> <!--统一EL--> <dependency> <groupId>org.hibernate.validator</groupId> <artifactId>hibernate-validator</artifactId> <version>6.1.0.Final</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency>