如何通过JPA自动启用注入bean验证器?

时间:2013-12-02 09:32:20

标签: spring validation jpa

我有一个带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就在classpath中了   JPA2规范要求启用Bean Validation。

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

@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
    }
}