我希望将同一个EntityManagerFactory实例注入我的两个spring bean中。
我试试:
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
<property name="persistenceUnitName" value="my-app"/>
</bean>
<bean id="serverDAO"
class="com.ehcachedemo.dao.ServerDAO">
<property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
<bean id="testServerDAO"
class="com.ehcachedemo.test.TestServerDAO">
<property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
但是在运行时,会注入两个不同的EntityManagerFactory实例。有小费吗?感谢
答案 0 :(得分:1)
考虑到默认的spring-managed bean是一个单例,你的entityManagerFactory
bean应该已经在两个DAO中都是同一个实例。
您可以通过将singleton="true"
添加到entityManagerFactory
bean定义中来明确这一点。
所以你的bean定义应该是:
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean"
singleton="true">
<property name="persistenceUnitName" value="my-app"/>
</bean>