一尘不染

@Autowired entityManagerFactory为空

hibernate

我的应用无法自动装配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为空?


阅读 448

收藏
2020-06-20

共1个答案

一尘不染

为了让spring使用注释进行自动扭曲,您必须告诉spring。在您的xml配置中(假设您还没有context:component- scanelement)添加一个context:annotation- config。这将指示Spring应用程序上下文来扫描注解(如@Autowired@Inject@Resource等)做自动装配。

还要确保要EntityManagerFactory注入的Engine类(该类)是spring托管的bean。Spring只会将引用注入到Spring托管的bean中。

2020-06-20