gpt4 book ai didi

java - Spring无法从app-config-text.xml找到app-config.xml

转载 作者:行者123 更新时间:2023-11-30 07:23:17 26 4
gpt4 key购买 nike

我正在为我的小应用程序的 DAO 层开发集成测试,并且遇到了问题。我使用 2 个不同的 application-config.xml 进行测试(用于使用 HSQLDB)和生产(MySql)。即使我在测试文件中导入了生产配置文件,Spring 仍然找不到它。结果,没有找到依赖关系的 [DAO] 类型的合格 bean(希望是由于这个问题造成的)。显示完整路径或对 xml 文件使用 **/或/都没有帮助。

我收到的异常:

org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.phoneBook.DAO.ContactDAO] found for dependency

我的测试类:

    @RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:**/application-context-test.xml"/*, "/application-config.xml"*/})
@TransactionConfiguration(transactionManager = "transactionManager",defaultRollback = true)
@Transactional
public class ContactTest {
//various fields for tests
@Inject
private ContactDAO contactIntegrDAO;
@Inject
private UserDAO userItegrDAO;

// various test methods
}

如果我在 @ContextConfiguration 中取消注释“/application-config.xml”,我的测试配置(使用 HSQLDB 数据源)根本不会启动,并且我在生产数据库上调用了所有集成测试。

application-context-test.xml 中的测试配置:

<import resource="classpath:**/application-config.xml"/>

application-config.xml 中的生产配置:

<context:component-scan base-package="com.phoneBook" />

<tx:annotation-driven transaction-manager="transactionManager" />

<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:properties/database.properties" />
</bean>
<!-- Alternative way to set database.properties -->
<!-- <context:property-placeholder location="classpath:properties\database.properties"
/> -->

<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>

<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="packagesToScan" value="com.phoneBook.entities" />
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
</property>
<property name="jpaProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
<prop key="hibernate.flushMode">${hibernate.flushMode}</prop>
<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
</props>
</property>
</bean>

<bean id="persistenceExceptionTranslationPostProcessor"
class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" />

项目结构:

enter image description here

任何帮助将不胜感激。

更新:

感谢asg's响应 我更正了类路径的拼写错误,但不幸的是,问题仍然存在

最佳答案

问题可能出在您的测试应用程序上下文上。

application-context-test.xml 中的测试配置:

<import resource="clathpath:**/application-config.xml"/>

尝试将其更改为:

编辑:

<import resource="classpath:application-config.xml"/>

您正在将“src/resources/application-config.xml”xml 文件导入到“test/resources/application-config-test.xml”文件中。

因此,将导入语句更改为上面编辑的语句。它应该适合你。

关于java - Spring无法从app-config-text.xml找到app-config.xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37184706/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com