1

同じ EntityManagerFactory インスタンスを 2 つの 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>

ただし、実行時には、2 つの異なる EntityManagerFactory インスタンスが注入されます。任意のヒント?ありがとう

4

1 に答える 1

1

デフォルトの spring-managed Bean がシングルトンであることを考慮すると、entityManagerFactoryBean はすでに両方の DAO で同じインスタンスになっているはずです。

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

したがって、Bean の定義は次のようになります。

<bean id="entityManagerFactory"
    class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean"
    singleton="true">
    <property name="persistenceUnitName" value="my-app"/>   
</bean>
于 2012-04-15T21:41:38.443 に答える