我的应用无法自动装配entityManagerFactory。
我的 applicationContext.xml :
<tx:annotation-driven/> <context:component-scan base-package="top.level.package" /> <bean id="persistenceUnitManager" class="org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager"> <property name="persistenceXmlLocation"> <value>classpath:jpa-persistence.xml</value> </property> </bean> <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> <property name="persistenceUnitManager" ref="persistenceUnitManager" /> </bean> <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="entityManagerFactory" /> </bean>
我的 java课 :
@Component public class Engine { @Autowired @Qualifier("entityManagerFactory") private EntityManagerFactory entityManagerFactory; ...... }
题:
为什么entityManagerFactory为空?
为了让spring使用注释进行自动扭曲,您必须告诉spring。在您的xml配置中(假设您还没有context:component- scanelement)添加一个context:annotation- config。这将指示Spring应用程序上下文来扫描注解(如@Autowired,@Inject,@Resource等)做自动装配。
context:component- scan
context:annotation- config
@Autowired
@Inject
@Resource
还要确保要EntityManagerFactory注入的Engine类(该类)是spring托管的bean。Spring只会将引用注入到Spring托管的bean中。
EntityManagerFactory
Engine