众所周知,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); } }
springboot中使用validation在service层判断参数
最新推荐文章于 2024-07-19 17:23:52 发布