2012-04-15 15 views
1

同じEntityManagerFactoryインスタンスを2つのSpring Beanに挿入したいとします。同じBeanインスタンスを2つの他の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> 

しかし、実行時に、2差のEntityManagerFactoryインスタンスが注入されています。任意のヒント?ありがとう

+3

は、なぜあなたは、これらのインスタンスが異なっていることだと思いますか? – axtavt

答えて

1

デフォルトのスプリングマネージドBeanがシングルトンであることを考慮すると、entityManagerFactory beanはである必要があります。すでにが両方のDAOで同じインスタンスになっている必要があります。

entityManagerFactory bean定義にsingleton="true"を追加することで、これを明示的にすることができます。

だからあなたのBean定義は次のようになります。

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

ありがとうございます。とにかくインスタンスの数を1つに制限せずに同じインスタンスを挿入できるのですか? – dublintech

+1

インスタンスの数を制限すると何が問題になりますか? –

+1

それは意味がありません、 'LocalEntityManagerFactoryBean'はデフォルトでシングルトンを生成します。 – axtavt

関連する問題