數據校驗 是很是常見的工做,在平常的開發中貫穿於代碼的各個層次,在任什麼時候候,當你要處理一個應用程序的業務邏輯,數據校驗是你必需要考慮和麪對的事情。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]
複製代碼