如何在非Spring框架中使用Hibernate Validator进行参数校验,本文将介绍在Service层、Rpc服务层等其它地方使用Hibernate Validator进行参数校验。
1、添加Hibernate Validator依赖
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.4.3.Final</version>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.el</artifactId>
<version>3.0.0</version>
</dependency>
2、定义校验规则
public class Goods {
private Long id;
@NotNull(message = "价格不能为空")
private BigDecimal price;
@NotNull(message = "名称不能为空")
private String name;
}
3、构建Validator并进行校验
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.validation.ConstraintViolation;
import javax.validation.ValidationException;
import javax.validation.Validator;
import java.util.Set;
@Component
public class MyValidator {
//springboot中可直接依赖注入
private Validator validator=Validation.buildDefaultValidatorFactory().getValidator();
@Autowired
private GoodsDao goodsDao;
/**
* 通过HibernateValidator验证bean
*
* @param o
*/
public void validate(Object o) {
Set<ConstraintViolation<Object>> errors = validator.validate(o);
if (!errors.isEmpty()) {
throw new ValidationException(errors.iterator().next().getMessage());
}
}
//just for test
public void save(Goods goods){
validate(goods);
goodsDao.insert(goods)
}
}