概述:在java开发时,由于分层的原因(表现层-控制层-业务层-数据持久层),有时候需要对传入的Javabean进行校验,如果过多的校验会导致比较繁琐,做重复的工作,下面将介绍Bean Validation技术,该技术是利用注解的方式,在javabean代码内部,利用注解实现校验,这样会将繁琐的工作变得简单。
注:在阅读如下知识之前,要对注解有一些了解。
来一个简单的Bean Validation实现 ,热热身:
packagevalidation;importjava.util.Set;importjavax.validation.ConstraintViolation;importjavax.validation.Validation;importjavax.validation.Validator;importjavax.validation.ValidatorFactory;importjavax.validation.constraints.NotNull;importjavax.xml.bind.ValidationException;//import validation.vo.Person;
/*** @ClassName: Test1
* @Description: TODO
*@authorzhangyy
* @date 2015-7-30 上午11:44:15*/
public classTest1 {public static voidmain(String [] args ){
Person person= newPerson();try{
Test1.validate(person);
}catch(ValidationException e) {
System.out.println(e.getMessage());//输出结果是:用户名不能为空
}
}public static void validate(T t) throwsValidationException {
ValidatorFactory vFactory=Validation.buildDefaultValidatorFactory();
Validator validator=vFactory.getValidator();
Set> set =validator.validate(t);if(set.size()>0){
StringBuilder validateError= newStringBuilder();for(ConstraintViolationval : set){
validateError.append(val.getMessage());
}throw newValidationException(validateError.toString());
}
}
}classPerson{
@NotNull(message="用户名不能为空") //此处为校验注解
privateString username;publicString getUsername() {returnusername;
}public voidsetUsername(String username) {this.username =username;
}
}
上面的代码用到了@NotNull()注解进行校验,一个完整的校验步骤包括如下四个步骤:
1.约束注解的定义
2.约束验证规则(约束验证器)
3.约束注解的声明
4.约束验证流程
下面用代码来进行详细的解释:
1.约束的定义:
Bean Vlidation技术提供了一些内置的约束定义,还可以自定义;下面是内置的:
约束注解名称约束注解说明
@Null
验证对象是否为空