1

我希望将相同的 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 实例。有小费吗?谢谢

4

1 回答 1

1

考虑到默认的 spring-managed bean 是一个单例,你的entityManagerFactorybean 在两个 DAO 中应该已经是同一个实例。

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

所以你的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 回答