加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

JSR-303依赖注入和Hibernate

发布时间:2020-12-13 20:24:17 所属栏目:百科 来源:网络整理
导读:Spring 3.0.2, Hibernate 3.5.0, Hibernate-Validator 4.0.2.GA 我试图使用以下方式将Spring依赖项注入到ConstraintValidator中: @PersistenceContextprivate EntityManager entityManager; 我已经配置了应用程序上下文: bean id="validator" class="org.s
Spring 3.0.2,
Hibernate 3.5.0,
Hibernate-Validator 4.0.2.GA

我试图使用以下方式将Spring依赖项注入到ConstraintValidator中:

@PersistenceContext
private EntityManager entityManager;

我已经配置了应用程序上下文:

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

根据Spring文档,它应该允许“自定义ConstraintValidators从任何其他Spring bean的依赖注入中受益”

在调试器中,我可以看到Spring调用getBean来创建ConstraintValidator.稍后当flush触发preInsert时,会创建并调用一个不同的ConstraintValidator.问题是在这个新的ConstraintValidator中EntityManager为null.我已经尝试在ConstraintValidator中注入其他依赖项,并且这些依赖项始终为空.

有人知道是否可以将依赖项注入到ConstraintValidator中?

在EntityManager中注入一个Spring上下文感知ValidatorFactory的最好方法是使用javax.persistence.validation.factory属性.配置如下:
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
 <property name="dataSource" ref="dataSource" />
 <property name="jpaVendorAdapter">
  <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
   <property name="databasePlatform" value="org.hibernate.dialect.HSQLDialect" />              
  </bean>
 </property>
 <property name="jpaPropertyMap">
  <map>
   <entry key="javax.persistence.validation.factory" value-ref="validator" />               
  </map>
 </property>
</bean>

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

请享用!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读