CommonValidatorImpl。java
import org.springframework.beans.factory.InitializingBean; import org.springframework.stereotype.Component; import org.springframework.util.Assert; import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean; import org.springframework.validation.beanvalidation.SpringValidatorAdapter; import javax.validation.*; import java.util.Set; /** * 自定义hibernate校验器 * @author zwh * @date 2020/6/19 11:45 **/ @Component public class CommonValidatorImpl implements InitializingBean { private Validator validator; /** * 实现校验方法并返回校验结果 * @param bean * @return */ private Set<ConstraintViolation<Object>> doValidate(Object bean, Class<?>... groups){ Assert.state(this.validator != null, "No Validator set"); Set<ConstraintViolation<Object>> result = this.validator.validate(bean,groups); return result; } /** * hibernate校验 * @param bean * @return */ public boolean validate(Object bean, Class<?>... groups){ Set<ConstraintViolation<Object>> result = this.doValidate(bean, groups); if (!result.isEmpty()) { throw new ConstraintViolationException(result); } return true; } /** * Perform validation of the given bean. * bean the bean instance to validate * @see javax.validation.Validator#validate */ // protected void dovalidate(Object bean) { // Assert.state(this.validator != null, "No Validator set"); // Set<ConstraintViolation<Object>> result = this.validator.validate(bean); // if (!result.isEmpty()) { // throw new ConstraintViolationException(result); // } // if (!result.isEmpty()) { // StringBuilder sb = new StringBuilder("Bean state is invalid: "); // for (Iterator<ConstraintViolation<Object>> it = result.iterator(); it.hasNext();) { // ConstraintViolation<Object> violation = it.next(); // sb.append(violation.getPropertyPath()).append(" - ").append(violation.getMessage()); // if (it.hasNext()) { // sb.append("; "); // } // } // throw new BeanInitializationException(sb.toString()); // } // } @Override public void afterPropertiesSet() throws Exception { this.setValidator(Validation.buildDefaultValidatorFactory().getValidator()); } /** * Set the JSR-303 Validator to delegate to for validating methods. * <p>Default is the default ValidatorFactory's default Validator. */ public void setValidator(Validator validator) { // Unwrap to the native Validator with forExecutables support if (validator instanceof LocalValidatorFactoryBean) { this.validator = ((LocalValidatorFactoryBean) validator).getValidator(); } else if (validator instanceof SpringValidatorAdapter) { this.validator = validator.unwrap(Validator.class); } else { this.validator = validator; } } public void setValidatorFactory(ValidatorFactory validatorFactory) { this.validator = validatorFactory.getValidator(); } }
使用方式
commonValidator.validate(new User);