2012-04-15 87 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