【问题标题】:How to inject bean validator automatically enabled by JPA?如何注入 JPA 自动启用的 bean 验证器?
【发布时间】:2013-12-02 19:02:16
【问题描述】:

我有一个带有 JPA 的 spring 应用程序。我正在使用 JSR303-Bean 验证框架。

http://docs.jboss.org/hibernate/validator/4.0.1/reference/en/html_single/#d0e2461

6.2.2。 JPA

如果您使用 JPA 2 并且 Hibernate Validator 在类路径中 JPA2 规范要求启用 Bean Validation。

文档说的是真的,jsr303 按预期工作。我想对约束进行单元测试。我的单元测试启用了弹簧,所以自动装配应该可以工作。问题是我无法自动装配 javax.validation.Validator,因为它不是由 spring 管理的。

我应该如何获得对验证器对象的引用?

【问题讨论】:

    标签: spring validation jpa


    【解决方案1】:

    使用由 Spring 管理的LocalValidatorFactoryBean。例如在您的测试applicationContext.xml 中添加以下内容:

    <bean id="validator"
        class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" />
    

    然后您可以通过自动装配字段在您的测试类中获取Validator 的句柄(Spring 将解析实际的提供者):

    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration
    public class ValidationTest {
    
        @Autowired
        private javax.validation.Validator validator;
    
        @Test
        public void testValidation {
            // Run validator.validate() on your entity and perform assertions
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-30
      • 2019-01-06
      • 2011-03-30
      • 2013-05-04
      相关资源
      最近更新 更多