我有一个带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管理的。
我应该如何获得对验证器对象的引用?
答案 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
}
}