数据校验 是很是常见的工做,在平常的开发中贯穿于代码的各个层次,在任什么时候候,当你要处理一个应用程序的业务逻辑,数据校验是你必需要考虑和面对的事情。java
JSR是Java Specification Requests的缩写,意思是Java 规范提案。关于数据校验这块,最新的是JSR380,也就是咱们常说的Bean Validation 2.0。 Bean Validation是一个经过配置注解来验证参数的框架,它包含两部分Bean Validation API(规范)和Hibernate Validator(实现)。api
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<!-- <version>1.1.0.Final</version> -->
<version>2.0.1.Final</version>
</dependency>
复制代码
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.17.Final</version>
</dependency>
复制代码
@Data
public class HelloDTO {
@NotBlank
private String name;
@Min(value = 0)
@Max(150)
private int age;
}
复制代码
@Slf4j
public class ValidationUtils {
private static Validator validator = Validation
.byProvider(HibernateValidator.class)
.configure()
.failFast(true)
.buildValidatorFactory()
.getValidator();
public static <T> void validate(T obj) {
Set<ConstraintViolation<T>> validate = validator.validate(obj);
for (ConstraintViolation<T> violation : validate) {
// TODO 注意:这里需根据实际业务进行自定义异常的抛出或作响应的操做
log.info("错误信息=[{}{}]", violation.getPropertyPath().toString(), violation.getMessage());
}
}
}
复制代码
public class ApplicationTest {
public static void main(String[] args) {
HelloDTO dto = new HelloDTO();
dto.setName("Tom");
dto.setAge(169);
ValidationUtils.validate(dto);
}
}
复制代码
15:51:13.102 [main] INFO com.leaf1993.dry.goods.validation.ValidationUtils - 错误信息=[age最大不能超过150]
复制代码