我希望该解决方案可以帮助:
@Beanpublic Validator validator () { ValidatorFactory validatorFactory = Validation.byProvider( Hibernatevalidator.class ) .configure().constraintValidatorFactory(new SpringConstraintValidatorFactory(autowireCapableBeanFactory)) .buildValidatorFactory(); Validator validator = validatorFactory.getValidator(); return validator;}使用初始化验证器,SpringConstraintValidatorFactory以便注入能够工作,并将验证器实现提供为Hibernate.class的工作方式如下:
- 你选择的库将验证你的对象
- 你的自定义验证器将能够使用Spring的功能,同时让Hibernate执行验证。
工作原理:除非被调用,否则
Hibernate ConstraintValidatorFactory不会初始化任何东西
ConstraintValidators,而是
SpringConstraintValidatorFactory通过给予
AutowireCapableBeanFactory它来初始化。
编辑
如@shabyasaschi的评论之一所述,要注入,
autowireCapableBeanFactory你可以将方法签名更改为:
Validator validator(final AutowireCapableBeanFactory autowireCapableBeanFactory) {或在配置文件中为其添加getter和setter,如下所示:
public AutowireCapableBeanFactory getAutowireCapableBeanFactory() { return autowireCapableBeanFactory;}public void setAutowireCapableBeanFactory(AutowireCapableBeanFactory autowireCapableBeanFactory) { this.autowireCapableBeanFactory = autowireCapableBeanFactory;}


