休眠验证器,而不使用自动装配

我目前正在开发Jersey项目,并决定使用Hibernate验证器进行参数验证。 在Endpoint类中注入的所有依赖项都已正确初始化。 但是对于ConstraintValidator类中的依赖关系,它总是抛出一个NPE。 所以我遵循Spring + Hibernate指南和注册指南

bean id =“validator”class =“org.springframework.validation.beanvalidation.LocalValidatorFactoryBean”

并在需要注入的ConstraintValidator类中为服务使用@Autowired注释。

使用它有哪些副作用? 有没有办法避免ConstraintValidator类中的自动装配注释,并仍然注入值? 我尝试手动注册constraintValidator类在上下文中作为bean,添加一个属性引用到我需要的服务,但它会抛出一个空指针异常。


“Hibernate Validator - JSR 303参考实现 - 参考指南”介绍了一些有关Portality的内容:

警告

依赖于特定于实现的ConstraintValidatorFactory行为的任何约束实现(依赖注入,无无参数构造函数等)都不被认为是可移植的。

那么,这是一件坏事吗? 在我看来,它不是。 当然,你现在被耦合到DI容器(Spring),并且不能轻松地重用验证器(例如,当不使用Spring时)。 另一方面,通过Spring工厂构建验证器,您可以充分利用框架并执行非常繁重的工作(读取实体的修订数据和以前状态的比较,调用任意服务,增强或本地化验证消息,.. )。

你必须非常小心的一件事是验证器的语义通常是只读的,不应该通过调用它来引起副作用。 例如,由于通过调用(事务)服务或读取验证器中的数据进行一些自动刷新,请勿意外将数据刷新到数据库。

链接地址: http://www.djcxy.com/p/82023.html

上一篇: hibernate validator without using autowire

下一篇: Database access from jsr