Bootstrap

Springboot整合Hibernate Validator实现对自定义报文CommonRequest内容参数校验

1、什么是validator?

在开发中经常需要写一些字段校验的代码,比如字段非空,字段长度限制,邮箱格式验证等等,写这些与业务逻辑关系不大的代码有三个麻烦:

   验证代码繁琐,重复劳动
   方法内代码显得冗长
   每次要看哪些参数验证是否完整,需要去翻阅验证逻辑代码

Hibernate Validator就用于解决这种问题,他是一种参数校验的框架, Bean Validation 的参考实现 . Hibernate Validator 提供了 JSR 303规范中所有内置 constraint 的实现,除此之外还有一些附加的 constraint。


2、准备工作

(1) Springboot项目中,它被集成在web包里

		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

(2) 编写校验结果存储类(存储错误信息)

import org.apache.tomcat.util.buf.StringUtils;

import java.util.HashMap;
import java.util.Map;

public class ValidationResult {
    private boolean hasErrors;
    private Map<String,String> errorMsgMap = new HashMap<>();

    public boolean isHasErrors() {
        return hasErrors;
    }

    public void setHasErrors(boolean hasErrors) {
        this.hasErrors = hasErrors;
    }

    public Map<String, String> getErrorMsgMap() {
        return errorMsgMap;
    }

    public void setErrorMsgMap(Map<String, String> errorMsgMap) {
        this.errorMsgMap = errorMsgMap;
    }

    //通过字符串信息获取错误结果的msg方法
    public String getErrMsg(){
        return errorMsgMap.toString();
    }

}

(3) 编写ValidatorImpl实现类,实现错误检查,并且将错误结果存储在ValidationResult

import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;

import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import java.util.Set;

&
;