前言
每次我们在搭建一个开源项目的首要任务包括:项目的统一异常处理、统一结果封装以及做项目的数据校验,在前后端分离的情况下,不仅前端需要做数据校验,同样后端也要实现,前端主要使用一些类似与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计算合法性
被注释的元素必须是电子邮箱地址
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