当前位置: 首页 > >

springboot中使用validation在service层判断参数

发布时间:

众所周知,validation在controller层很简单。加一个@Valid,加一个bindingresult就行了。

但是在service里怎么判断,查了半天也没查到例子。

业务场景是,json报文的body部分是整体加密的,所以不可能在controller接收的时候用@Requestbody和@Valid就直接检查了,必须先解密,然后在service层判断。

看了一篇分析validation的文章时,https://www.cnblogs.com/mr-yang-localhost/p/7812038.html,介绍了hibernate的校验模式,于是参考写了一个方法。可以实现valid检查参数的目的。


public static void serviceValid(Object object){
String validMessage = "";
? //初始化检查器。
ValidatorFactory validatorFactory = Validation.byProvider( HibernateValidator.class )
.configure()
.failFast( false )
.buildValidatorFactory();
Validator validator = validatorFactory.getValidator();
//检查object
Set> set = validator.validate(object);
? //循环set,获取检查结果
for(ConstraintViolation voset : set){
validMessage = validMessage + voset.getMessage() +";";
}
if(!StringUtils.isEmpty(validMessage)){
//抛出业务异常
throw new XXXException(validMessage);
}
}



友情链接: