当前位置: 首页 > 面试题库 >

JSR-303injection and Hibernate

蓟清野
2023-03-14
问题内容

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。稍后,当刷新触发preInsert时,将创建并调用另一个ConstraintValidator。问题在于此新ConstraintValidator中的EntityManager为null。我尝试在ConstraintValidator中注入其他依赖项,这些依赖项始终为null。

有谁知道是否可以将依赖项注入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"/>


 类似资料:
  • Spring还支持基于JSR-250的注释,包括@ PostConstruct,@ PreDestroy和@Resource注释。 虽然这些注释并不是真的需要,因为你已经有了其他的替代品,但让我们对它们进行简要的了解。 @PostConstruct和@PreDestroy注释 要定义bean的设置和拆卸,我们只需使用init-method和/或destroy-method参数声明<bean>。 i

  • 27.5.1 服务端连接器 为了使用Spring JMX 来创建,需要使用以下配置启动并暴露JSR-160 JMXConnectorServer: <bean class="org.springframework.jmx.support.ConnectorServerFactoryBean"/> ConnectorServerFactoryBean创建的JMXConnectorServer默认会

  • 32.4 JCache (JSR-107) 注解 Spring Framework 4.1 以来,缓存抽象完全支持 JCache 标准:即 @CacheResult,@CachePut,@CacheRemove 和 @CacheRemoveAll 还有 @CacheDefaults,@CacheKey 和 @CacheValue 。这些注解被大家正确的使用,体现了缓存在 JSR-107 的实现:缓

  • 我的bean中有两个字段 当字段key=“A”,“value”应该跟在其他“key”的特定Regex后面时,它可以是任何内容。 如何根据键定义此值验证。

  • 问题内容: JGoodies绑定和JSR 295(Beans绑定)之间的实际区别是什么?他们似乎都旨在达到相同的目的,并完成他们的工作(方法略有不同)。JGoodies Binding更成熟,但是JSR 295最终成为Java 7中JDK的一部分。 对于相同的功能,使用JDK的标准部分肯定比使用单独的库更好,但是还有其他因素需要考虑吗?还有其他选择吗?在这些选择之间进行选择是非常不可逆的体系结构决

  • 问题内容: 您能否说明一下如何为默认系统时区和给定时区获取正确的纪元时间(以毫秒为单位)。 给定 1.时区:GMT + 3 2.以下代码段: 3.输出: 4. System.currentTimeMillis()的 JavaDoc,它指示返回值将是 当前时间与UTC 1970年1月1日午夜之间的差(以毫秒为单位)。 所以为什么 at 的输出与of的输出相同,尽管提及的文档? at 的输出与有所不同