如何将spring bean注入Validator(hibernate)

时间:2015-06-08 17:47:45

标签: java spring bean-validation hibernate-validator

spring doc

我已阅读以下春季文档:

  

默认情况下,LocalValidatorFactoryBean配置一个   使用Spring创建的SpringConstraintValidatorFactory   ConstraintValidator实例。这允许您的自定义   ConstraintValidators受益于依赖注入   其他春豆。

我写了自定义验证器:

public class FieldMatchValidator implements ConstraintValidator<FieldMatch, Object>{
    @Autowired
    MyBeanDao dao;
    ...
}

但是在调试中我看到dao为null。

请解释我不懂文档或者我配错了什么?

1 个答案:

答案 0 :(得分:1)

使用Spring Validator,它还实现了Bean Validation API。

请参见7.8.2配置Bean验证提供程序:

http://docs.spring.io/spring/docs/current/spring-framework-reference/html/validation.html

您也可以将它用于方法验证,参见&#34; Spring-driven方法验证&#34;上面文档中的部分。

<强> [UPDATE1]

如果你希望hibernate在persist上验证,你需要在你的enityManagerFactory中设置jpa属性 javax.persistence.validation.factory

            <property name="jpaPropertyMap">
              <map>
                <entry key="javax.persistence.validation.factory" value-ref="validatorFactory" />
              </map>
            </property>

您可能还需要为事件设置验证组,请参阅: http://docs.jboss.org/hibernate/validator/4.1/reference/en-US/html/validator-checkconstraints.html#validator-checkconstraints-orm-hibernateevent