为什么要使用Bean Validation?
当我们实现某个接口时,都需要对入参数进行校验。例如下面的代码
public String queryValueByKey(String parmTemplateCode, String conditionName, String conditionKey, String resultName) {
checkNotNull(parmTemplateCode, "parmTemplateCode not null");
checkNotNull(conditionName, "conditionName not null");
checkNotNull(conditionKey, "conditionKey not null");
checkNotNull(resultName, "resultName not null");
该方法输入的四个参数都是必填项。用代码进行参数验证带来几个问题
需要写大量的代码来进行参数验证。
需要通过注释来直到每个入参的约束是什么。
每个程序员做参数验证的方式不一样,参数验证不通过抛出的异常也不一样。
什么是Bean Validation?
Bean Validation是一个通过配置注解来验证参数的框架,它包含两部分Bean Validation API和Hibernate Validator。
Bean Validation API是Java定义的一个验证参数的规范。
Hibernate Validator是Bean Validation API的一个实现。
快速开始
引入POM
org.hibernate
hibernate-validator
5.1.1.Final
javax.validation
validation-api
1.1.0.Final
javax.el
el-api
2.2
org.glassfish.web
javax.el
2.2.4
org.jboss.logging
jboss-logging
3.1.3.GA
com.fasterxml
classmate
1.0.0
log4j
log4j
1.2.13
实例代码如下,可以验证Bean,也可以验证方法参数
import java.lang.reflect.Method;
import java.util.Set;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.constraints.Max;
import javax.validation.constraints.NotNull;
import javax.validation.executable.ExecutableValidator;
public class BeanValidatorTest {
public static void main(String[] args) {
Validator validator = Validation.buildDefaultValida