前言

每次我们在搭建一个开源项目的首要任务包括:项目的统一异常处理、统一结果封装以及做项目的数据校验,在前后端分离的情况下,不仅前端需要做数据校验,同样后端也要实现,前端主要使用一些类似与jQuery Validate等js/css插件实现通过数据校验,比如:bootstrap-validator,而后端主要使用的是Hibernate Validator检验框架,通过数据校验,我们能避免用户借助一些HTTP请求工具直接向后端发送一些不合法的数据请求,本文将入如何在Spring/Spring Boot下实现后端的数据校验。

Hibernate Validator

常见注解

注解

用途

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计算合法性

Email

被注释的元素必须是电子邮箱地址

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

Maven依赖

org.hibernate.validator
hibernate-validator
6.1.0.Final
org.hibernate.validator
hibernate-validator
6.1.0.Final
org.springframework.boot
spring-boot-starter-web
org.projectlombok
lombok
true
org.springframework.boot
spring-boot-starter-test
test