基于HibernateValidator的校验工具类

为何要有数据校验?

数据校验 是很是常见的工做,在平常的开发中贯穿于代码的各个层次,在任什么时候候,当你要处理一个应用程序的业务逻辑,数据校验是你必需要考虑和面对的事情。java

Java Bean Validation

JSR是Java Specification Requests的缩写,意思是Java 规范提案。关于数据校验这块,最新的是JSR380,也就是咱们常说的Bean Validation 2.0。 Bean Validation是一个经过配置注解来验证参数的框架,它包含两部分Bean Validation API(规范)和Hibernate Validator(实现)。api

使用validation-api

  • 在pom中加入依赖
    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <!-- <version>1.1.0.Final</version> -->
        <version>2.0.1.Final</version>
    </dependency>
    复制代码
  • 也能够加入下面的依赖,2选1
    <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]
复制代码
相关文章
相关标签/搜索