• 框架——校验框架——HibernateValidator——配置校验器工厂


    校验器Validator配置默认会继承ValidatorFactory的配置。

      本篇介绍校验器工厂的创建,配置。

    1、创建

    创建过程可以指定provider,可以调用configure()注册对象,可以调用其他方法进行配置。

    调用Validation.buildDefaultValidatorFactory不指定任何的配置。

    调用Validation.byDefaultProvider指定默认的provider,默认的provider对象为HibernateValidator。

    调用configure方法注册对象,类似于spring mvc中注册listener,filter等等对象。

    调用其他方法进行配置。

    2、配置

    主要内容是注册核心对象,添加变量等。

    2.1 注册核心对象

    被校验对象相关:

    TraversableResolver:自定义校验延迟加载的属性对象。

    ValidatorFactory validatorFactory = Validation.byDefaultProvider().configure()
            .traversableResolver( new MyTraversableResolver())
            .buildValidatorFactory();
    

      ParameterNameProvider:获取方法,构造器的参数信息。

    ValidatorFactory validatorFactory = Validation.byDefaultProvider()
            .configure()
            .parameterNameProvider( new MyParameterNameProvider() )
            .buildValidatorFactory();
    

      ValueExtractor:获取被校验主体的值。

    ValidatorFactory validatorFactory = Validation.byDefaultProvider()
            .configure()
            .addValueExtractor( new MultimapValueValueExtractor() )
            .buildValidatorFactory();
    

      错误信息:

    MessageInterpolator:将消息模板解析为错误信息

    ValidatorFactory validatorFactory = Validation.byDefaultProvider()
            .configure()
            .messageInterpolator( new MyMessageInterpolator() )
            .buildValidatorFactory();
    

      ConstraintValidatorFactory:校验失败后,创建ConstraintValidation对象实例。

    ValidatorFactory validatorFactory = Validation.byDefaultProvider()
            .configure()
            .constraintValidatorFactory( new MyConstraintValidatorFactory() )
            .buildValidatorFactory();
    

      校验规则: addMapping(ConstraintMapping对象)。

    2.2 环境变量

      单个配置项:addProperty(key, value)。

    时钟信息:ClockProvier,调用.clockProvider()方法。

  • 相关阅读:
    java实现DAG广度优先便利
    java实现图分组
    四。字符串
    二。链表
    一。数组
    TypeScript学习(六)@types包
    TypeScript学习(五)三斜线指令
    TypeScript学习(四)声明文件和declare关键字
    TypeScript学习(三)命名空间和模块
    TypeScript学习(二)函数重载
  • 原文地址:https://www.cnblogs.com/rain144576/p/16640566.html
Copyright © 2020-2023  润新知