【问题标题】:How to inject spring bean into Validator(hibernate)如何将spring bean注入Validator(休眠)
【发布时间】:2015-06-08 17:47:44
【问题描述】:

spring doc

我已阅读以下春季文档:

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

我已经编写了自定义验证器:

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

但在调试中我看到 dao 为空。

请解释一下我看不懂文档或者我配置错误?

【问题讨论】:

    标签: java spring bean-validation hibernate-validator


    【解决方案1】:

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

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

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

    您也可以将其用于方法验证,请参阅上述文档中的“Spring-driven Method Validation”部分。

    [更新1]

    如果您希望 hibernate 在持久化上进行验证,您需要在 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

    【讨论】:

    • spring验证器会在persist之前自动验证bean吗?
    猜你喜欢
    • 2020-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-25
    • 2011-05-01
    • 2012-11-01
    • 2019-09-27
    相关资源
    最近更新 更多