多平台统一管理软件接口,如何实现多平台统一管理软件接口
620
2023-01-07
Hibernate Validator实现更简洁的参数校验及一个util
代码地址
https://github.com/wheel-organization/wheel
简介
hibernate-validator是Hibernate项目中的一个数据校验框架,是Bean Validation 的参考实现,hibernate-validator除了提供了jsR 303规范中所有内置constraint 的实现,还有一些附加的constraint。
使用hibernate-validator能够将数据校验从业务代码中脱离出来,增加代码可读性,同时也让数据校验变得更加方便、简单。
官网地址:http://hibernate.org/validator/
如何使用
项目中已经引入了需要的api,无需重复引入
在要校验的POJO上加上以下注解即可
HJnsIucAt 注解
用途
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
更多功能,如:自定义校验规则、分组校验、关联参数联合校验请查看官网或百度
Dubbo中使用Hibernate Validator校验入参
无需util,Dubbo接口配置上的validation为true即可
在客户端验证参数
在服务器端验证参数
在代码里校验入参
//obj为包含Hibernate Validator注解的POJO
//快速失败模式
ValidResult validResult = ValidationUtil.fastFailValidate(obj);
//obj为包含Hibernate Validator注解的POJO
//全部校验模式
ValidResult validResult = ValidationUtil.allCheckValidate(obj);
样例
public class ParamTestDTO implements Serializable {
private static final long serialVersionUID = 7123882542534668217L;
@AssertTrue(message = "Error True")
private Boolean testTrue;
@AssertFalse(message = "Error False")
private Boolean testFalse;
@DecimalMax(value = "10", message = "Error StrMax")
private String testStrMax;
@DecimalMin(value = "1", message = "Error StrMin")
private String testStrMin;
@HJnsIucAtMax(value = 10, message = "Error Max")
private Integer testMax;
@Min(value = 1, message = "Error Min")
private Double testMin;
@Digits(integer = 2, fraction = 3, message = "Error Dig")
private BigDecimal testDig;
@Past(message = "Error Past")
private Date testPast;
@Future(message = "Error Future")
private Date testFuture;
@Null(message = "Error Null")
private String testNull;
@NotNull(message = "Error NonNull")
private String testNonNull;
@Pattern(regexp = "^[0-9]?[0-9]$", message = "Error Pattern")
private String testPattern;
@Size(min = 1, max = 10, message = "Error Size")
private List
@Length(min = 1, max = 10, message = "Error Length")
private String testLength;
@NotBlank(message = "Error Blank")
private String testBlank;
@NotEmpty(message = "Error NotEmpty")
private String testEmpty;
@Range(min = 1, max = 10, message = "Error Range")
private String testRange;
}
单测:ValidationUtilTest
性能测试
结果如图:
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~