基於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]
複製代碼
相關文章
相關標籤/搜索