未找到[javax.sql.DataSource]类型的符合条件的bean

未找到[javax.sql.DataSource]类型的符合条件的bean,java,spring,hibernate,maven,spring-mvc,Java,Spring,Hibernate,Maven,Spring Mvc,我正在努力理解为什么会发生这种错误。我正在将教程移植到最新版本的Spring、Hibernate和WildFly。我从命令行运行,使用Maven构建和测试应用程序。我得到以下错误: 2015年7月10日下午2:18:03 org.springframework.test.context.TestContextManager prepareTestInstance 严重:允许TestExecutionListener[org.springframework.test.context.support

我正在努力理解为什么会发生这种错误。我正在将教程移植到最新版本的Spring、Hibernate和WildFly。我从命令行运行,使用Maven构建和测试应用程序。我得到以下错误:

2015年7月10日下午2:18:03 org.springframework.test.context.TestContextManager prepareTestInstance 严重:允许TestExecutionListener[org.springframework.test.context.support]时捕获异常。DependencyInjectionTestExecutionListener@523884b2]准备测试实例[com.russ.home.test.dao]。CompanyDaoTest@131774fe] org.springframework.beans.factory.BeanCreationException:创建名为“com.russ.home.test.dao.CompanyDaoTest”的bean时出错:自动连线依赖项的注入失败;嵌套异常为org.springframework.beans.factory.BeanCreationException:无法自动连接方法:public void org.springframework.test.context.junit4.AbstractTransactionalJunit4SspringContextTests.setDataSource(javax.sql.DataSource);嵌套异常为org.springframework.beans.factory.NoSuchBeanDefinitionException:未找到依赖项类型为[javax.sql.DataSource]的符合条件的bean:至少需要1个符合此依赖项autowire候选项条件的bean。依赖项批注:{}

这是我的测试应用程序上下文文件:

<bean id="propertyConfigurer"
             class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
             p:location="classpath:jdbc.properties" />

       <bean id="tttDataSource"
             class="org.springframework.jdbc.datasource.DriverManagerDataSource"
             p:driverClassName="${jdbc.driverClassName}"
             p:url="${jdbc.url}"
             p:username="${jdbc.username}"
             p:password="${jdbc.password}"
               />


       <bean id="jpaVendorAdapter"
             class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"
             p:showSql="true"
             p:databasePlatform="org.hibernate.dialect.MySQLDialect" />

       <bean id="entityManagerFactory"
             class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
             p:persistenceUnitName="ttt-jpa"
             p:dataSource-ref="tttDataSource"
             p:jpaVendorAdapter-ref="jpaVendorAdapter"
             p:persistenceXmlLocation="classpath*:META-INF/test-persistence.xml"
               />

       <!-- Transaction manager for a single JPA EntityManagerFactory (alternative to JTA) -->
       <bean id="transactionManager"
             class="org.springframework.orm.jpa.JpaTransactionManager"
             p:dataSource-ref="tttDataSource"
             p:entityManagerFactory-ref="entityManagerFactory"/>

       <!-- checks for annotated configured beans -->
       <context:annotation-config/>
这是公司测试类

@RunWith(SpringJUnit4ClassRunner.class)
public class CompanyDaoTest extends AbstractDaoForTesting {

    public CompanyDaoTest(){}

    /**
     * Test case for the find(id) method of the CompanyDao implementation
     * @throws Exception
     */
    @Test
    public void testFind() throws Exception {

        logger.debug("\nSTARTED testFind()\n");
        List<Company> allItems = companyDao.findAll();

        assertTrue(allItems.size() > 0);

        // get the first item in the list
        Company c1 = allItems.get(0);

        int id = c1.getId();

        Company c2 = companyDao.find(id);

        assertTrue(c1.equals(c2));
        logger.debug("\nFINISHED testFind()\n");
    }
@RunWith(SpringJUnit4ClassRunner.class)
公共类CompanyDaoTest扩展了AbstractDaoForTesting{
上市公司daotest(){}
/**
*CompanyDao实现的find(id)方法的测试用例
*@抛出异常
*/
@试验
public void testFind()引发异常{
debug(“\n开始测试查找()\n”);
List allItems=companyDao.findAll();
assertTrue(allItems.size()>0);
//获取列表中的第一项
公司c1=allItems.get(0);
int id=c1.getId();
公司c2=公司dao.find(id);
资产真(c1.等于(c2));
debug(“\n完成的testFind()\n”);
}
如有任何建议,将不胜感激


Russ

在比较了其他应用程序上下文文件并重新阅读了Spring文档之后,我发现我遗漏了一些东西。我重新开始并创建了这个新的应用程序上下文,并通过了这个错误

<!-- Activates various annotations to be detected in bean classes for ex @Autowired -->
    <context:annotation-config/>


    <bean id="propertyConfigurer"
          class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
          p:location="classpath:jdbc.properties" />

    <bean id="tttDataSource"
          class="org.springframework.jdbc.datasource.DriverManagerDataSource"
          p:driverClassName="${jdbc.driverClassName}"
          p:url="${jdbc.url}"
          p:username="${jdbc.username}"
          p:password="${jdbc.password}"
            />


    <bean id="jpaVendorAdapter"
          class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"
          p:showSql="true"
          p:databasePlatform="org.hibernate.dialect.MySQLDialect" />



    <bean id="entityManagerFactory"
          class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
          p:persistenceUnitName="ttt-jpa"
          p:dataSource-ref="tttDataSource"
          p:jpaVendorAdapter-ref="jpaVendorAdapter"
          p:persistenceXmlLocation="classpath*:META-INF/persistence.xml"
            />

    <!-- Transaction manager for JTA  -->
    <bean id="transactionManager"
          class="org.springframework.orm.jpa.JpaTransactionManager"
          p:dataSource-ref="tttDataSource"
          p:entityManagerFactory-ref="entityManagerFactory"/>

    <!-- enable the configuration of transactional behavior based on annotations -->
    <tx:annotation-driven />


    <!-- Scan for Repository/Service annotations -->
    <context:component-scan base-package="com.russ.home.dao"/>
    <context:component-scan base-package="com.russ.home.service"/>

我可以看com.russ.home.test.dao.CompanyDaoTest吗?
<!-- Activates various annotations to be detected in bean classes for ex @Autowired -->
    <context:annotation-config/>


    <bean id="propertyConfigurer"
          class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
          p:location="classpath:jdbc.properties" />

    <bean id="tttDataSource"
          class="org.springframework.jdbc.datasource.DriverManagerDataSource"
          p:driverClassName="${jdbc.driverClassName}"
          p:url="${jdbc.url}"
          p:username="${jdbc.username}"
          p:password="${jdbc.password}"
            />


    <bean id="jpaVendorAdapter"
          class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"
          p:showSql="true"
          p:databasePlatform="org.hibernate.dialect.MySQLDialect" />



    <bean id="entityManagerFactory"
          class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
          p:persistenceUnitName="ttt-jpa"
          p:dataSource-ref="tttDataSource"
          p:jpaVendorAdapter-ref="jpaVendorAdapter"
          p:persistenceXmlLocation="classpath*:META-INF/persistence.xml"
            />

    <!-- Transaction manager for JTA  -->
    <bean id="transactionManager"
          class="org.springframework.orm.jpa.JpaTransactionManager"
          p:dataSource-ref="tttDataSource"
          p:entityManagerFactory-ref="entityManagerFactory"/>

    <!-- enable the configuration of transactional behavior based on annotations -->
    <tx:annotation-driven />


    <!-- Scan for Repository/Service annotations -->
    <context:component-scan base-package="com.russ.home.dao"/>
    <context:component-scan base-package="com.russ.home.service"/>