Maven Dependency
<!-- JSR 303 Validation -->
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
</dependency>
<!-- JSR 303 Validation End -->
Samples
package com.liuliu.learning;
import java.util.Set;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
import org.hibernate.validator.HibernateValidator;
import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
/**
* @className ParamValidator
* @author: liuliu
* @date:Jun 21, 2019 9:34:30 AM
* @since JDK 1.8
*
*/
@Component
public class ParamValidator {
private static Logger logger = LoggerFactory.getLogger(ParamValidator.class);
/**
* Enable fail fast, which will improve performance
*/
private ValidatorFactory factory = Validation.byProvider(HibernateValidator.class).configure()
.messageInterpolator(new ParameterMessageInterpolator()).failFast(true)
.buildValidatorFactory();
/**
* When fail fast is enabled the validation will stop on the first constraint
* violation detected,
* then throw ParamSyncException with errorMsg Field.
*/
public void validate(Object candidate) {
Validator validator = factory.getValidator();
Set<ConstraintViolation<Object>> constraintViolations = validator.validate(candidate);
constraintViolations.forEach(violation -> {
logger.debug("Field: {}, Message: {}", violation.getPropertyPath(), violation.getMessage());
String errorMsg = violation.getPropertyPath() + ":" + violation.getMessage();
throw new MyException(errorMsg);
});
}
}
@Autowired
private ParamValidator paramValidator;
paramValidator.validate(candidate);
网友评论