spring 参数验证 的工具类 结合注解@NotNull

主要的工具类代码如下
public class ValidatorUtils {

    private ValidatorUtils() {
    }

    /**
     * 获取默认的Validator
     *
     * @param
     * @return
     * @title 获取默认的Validator
     * 
     */
    public static Validator validator() {
        return ValidatorFactory.INSTANCE.getValidator();
    }

    /**
     * 验证某个对象
     *
     * @param object
     * @return
     * @title 验证某个对象
     *
     */
    public static ValidatorResult validate(Object object) {
        Set<ConstraintViolation<Object>> constraintViolations = validator().validate(object);
        if (constraintViolations.isEmpty()) {
            return ValidatorResult.success();
        }

        Iterator<ConstraintViolation<Object>> iterator = constraintViolations.iterator();
        // 用于存储验证后的错误信息
        StringBuffer buffer = new StringBuffer(64);
        while (iterator.hasNext()) {
            buffer.append(iterator.next().getMessage() + "  |  ");
        }

        return ValidatorResult.fail(buffer.toString());
    }

    /**
     * 获取ValidatorFactory,保证单例
     * <功能详细描述》
     * @title 获取ValidatorFactory,保证单例
     * 
     */
    private enum ValidatorFactory {

        INSTANCE {
            javax.validation.ValidatorFactory factory = Validation.buildDefaultValidatorFactory();

            @Override
            public Validator getValidator() {
                return factory.getValidator();
            }
        };

        public abstract Validator getValidator();
    }

    /**
     * 验证结果
     * <功能详细描述>
     *
     * 
     */
    public static class ValidatorResult {
        /**
         * 是否成功
         */
        private Boolean success;

        /**
         * 描述
         */
        private String description;

        public ValidatorResult(Boolean success, String description) {
            this.success = success;
            this.description = description;
        }

        public Boolean getSuccess() {
            return success;
        }

        public void setSuccess(Boolean success) {
            this.success = success;
        }

        public String getDescription() {
            return description;
        }

        public void setDescription(String description) {
            this.description = description;
        }

        public static ValidatorResult success() {
            return new ValidatorResult(true, "验证通过");
        }

        public static ValidatorResult fail(String description) {
            return new ValidatorResult(false, description);
        }

        public Boolean failed() {
            return getSuccess() == false;
        }
    }
}

使用方式:在serviceImpl层或者 controller层

ValidatorUtils.ValidatorResult validatorResult =ValidatorUtils.validate(request.getData());
        if(validatorResult.failed()){
            logger.warn("请求失败:"+validatorResult.getDescription());
            return  result.fail(ResultCode.PARAM_ERROR.getCode(),validatorResult.getDescription());
        }

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值