将同一个bean实例注入另外两个bean

时间:2012-04-15 21:35:15

标签: spring

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

1 个答案:

答案 0 :(得分:1)

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

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

所以你的bean定义应该是:

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