如何在非Controller層使用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)
}
}