繁体   English   中英

Spring / Maven多模块项目:NoUniqueBeanDefinitionException

[英]Spring/ maven multi module project: NoUniqueBeanDefinitionException

我在Spring中有一个Maven多模块项目。 我有一个Core项目 ,其中包含所有数据访问bean以及EntityManagerFactoryBean。

现在,我有另一个maven模块项目,该项目Core项目的上下文xml文件导入上下文xml。 我正在尝试通过在API Project中指定此方法来覆盖entityManagerFactory bean:

 <beans:bean parent="entityManagerFactory">
    <beans:property name="packagesToScan">
        <beans:array>
            <beans:value>com.blah.data.domains</beans:value>
            <beans:value>com.blah.api.domains</beans:value>
        </beans:array>
    </beans:property>
</beans:bean>

此bean配置在Core项目中

  <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="persistenceUnitName" value="entityManager"/>
    <property name="packagesToScan" value="com.blah.data.domains" />
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
            <property name="showSql" value="true" />
            <property name="generateDdl" value="true" />
            <property name="databasePlatform" value="org.hibernate.dialect.PostgreSQLDialect" />
        </bean>
    </property>
    <!-- put any ORM specific stuff here -->
    <property name="jpaProperties">
        <props>
            <prop key="hibernate.hbm2ddl.auto">none</prop>
        </props>
    </property>
</bean>

如您在API项目中所见,我将com.blah.api.domains添加到packagesToScan属性。 问题是我遇到了这个问题:

 Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [javax.persistence.EntityManagerFactory] is defined: expected single matching bean but found 2: entityManagerFactory,entityManagerFactory$child#0

不要尝试在您的API模块中覆盖EntityManagerFactory,只需在您的核心模块中放置通配符即可扫描软件包。

 <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="persistenceUnitName" value="entityManager"/>
    <property name="packagesToScan" value="com.blah.*.domains" />
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
            <property name="showSql" value="true" />
            <property name="generateDdl" value="true" />
            <property name="databasePlatform" value="org.hibernate.dialect.PostgreSQLDialect" />
        </bean>
    </property>
    <!-- put any ORM specific stuff here -->
    <property name="jpaProperties">
        <props>
            <prop key="hibernate.hbm2ddl.auto">none</prop>
        </props>
    </property>
</bean>

使用com.blah.*.domains domains将扫描并加载所有域。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM