【发布时间】:2012-09-05 10:55:41
【问题描述】:
我需要做与Injecting Entitymanager via XML and not annnotations 中描述的非常相似的事情,但我需要从 XML 中注入真正的、容器创建的实体管理器,以便它的行为与真正的 @PersistenceContext 注释完全一样.我找到了一个 LocalEntityManagerFactoryBean(注意缺少“Container”字样),但我担心它会创建一个新的实体管理器工厂,因此实体管理器将与通过真正的 @PersistenceContext 注释注入的不兼容。
我将描述原因,因为它很奇怪,也许我的问题的解决方案是选择完全不同的方法。我在我的 spring 配置中使用 PropertyPlaceholderConfigurer,在这个配置器中我引用了其他 bean。我遇到了一个错误,即自动装配在那些引用的 bean 中不起作用。我不知道 PropertyPlaceholderConfigurer 为什么以及如何关闭那些引用的 bean 中的自动装配,但事实是,如果我用这些 bean 的 xml 配置替换自动装配,一切正常。但是我无法替换 EntityManager 的自动装配,因为它不是标准的 spring bean,而是 jndi 加载的我不完全理解的东西。
一种方法或另一种方法,有什么解决办法吗?
【问题讨论】:
-
据我所知,由
SharedEntityManagerBean创建的EntityManager从您提到的答案中的行为与通过@PersistenceContext注入的EntityManager完全相同。 -
SharedEntityManagerBean 需要注入 entityManagerFactory,我不知道该注入什么。