校验器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()方法。