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<ConstraintViolation<Object>> set = validator.validate(object);
   //循环set,获取检查结果
   for(ConstraintViolation<Object> voset : set){
      validMessage = validMessage + voset.getMessage() +";";
   }
   if(!StringUtils.isEmpty(validMessage)){
      //抛出业务异常
      throw new XXXException(validMessage);
   }
}
  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值