我有一個文件中的下列bean定義稱爲的beans.xml:爲什麼我可以從LocalContainerEntityManagerFactoryBean bean定義中獲取一個EntityManagerFactory對象?
<bean id="entityManager"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="packagesToScan" value="mypackagename" />
<property name="persistenceProviderClass"
value="org.hibernate.jpa.HibernatePersistenceProvider" />
<property name="jpaPropertyMap">
<map>
<entry key="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
<entry key="hibernate.hbm2ddl.auto" value="update" />
</map>
</property>
</bean>
,我能獲得這個bean作爲EntityManagerFactory
對象用下面的代碼:
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
EntityManagerFactory emf = context.getBean(EntityManagerFactory.class);
這是怎麼回事可能?
正如我所見LocalContainerEntityManagerFactoryBean
不實施EntityManagerFactory
。
這是如何工作的?
'LocalContainerEntityManagerFactoryBean'擴展了'AbstractEntityManagerFactoryBean',它表示*「抽象FactoryBean在Spring應用程序上下文中創建一個本地JPA'EntityManagerFactory'實例。」* – user2004685