2012-04-15 58 views
1

我希望将相同的EntityManagerFactory实例注入到两个我的spring bean中。向两个其他bean注入相同的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实例注入。有小费吗?由于

+3

为什么你认为这些情况有什么不同? – axtavt 2012-04-15 21:50:13

回答

1

考虑到默认Spring管理bean是一个单身,你entityManagerFactory豆应该已经在两个DAO中相同的实例。

您可以通过将singleton="true"添加到您的entityManagerFactory bean定义来明确这一点。

所以你的bean定义应该是:

<bean id="entityManagerFactory" 
    class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean" 
    singleton="true"> 
    <property name="persistenceUnitName" value="my-app"/> 
</bean> 
+0

谢谢。无论如何,我可以注入相同的实例,而不会将实例的数量限制为一个? – dublintech 2012-04-15 21:45:37

+1

限制实例的数量有什么问题? – 2012-04-15 21:49:14

+1

它没有任何意义,'LocalEntityManagerFactoryBean'默认生成单例。 – axtavt 2012-04-15 21:51:22

相关问题