Spring 测试来自 XML 的加载 bean 配置和注解?

Spring test load bean configuration from XML and annotation both?

这是我的 Spring Junit

    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration({"classpath*:/META-INF/spring/*.xml" ,
             "classpath*:META-INF/spring/datasource-testcontext.xml"})

    @TestExecutionListeners({ DependencyInjectionTestExecutionListener.class,
            DbUnitTestExecutionListener.class })
    public class GenericDaoTest {

        @Test
        public void testFind() throws Exception {

        }

          @Configuration
          @ComponentScan("com.myComp.user")
          public static class SpringConfig {

          }

但是仍然找不到用@Component注释的com.myComp.user.UserDAO。不确定我在这里缺少什么?

下面是我遇到的异常

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.myComp.user.UserDAO] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

您不能同时声明 @Configuration classes XML 配置文件。

您必须选择其中一种格式,然后导入另一种格式。

一个选择是摆脱静态嵌套 @Configuration class 并简单地在声明的 XML 配置文件中配置组件扫描。

另一种选择是通过您的 @Configuration class 导入 XML 配置,如下所示。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
@TestExecutionListeners({
    DependencyInjectionTestExecutionListener.class,
    DbUnitTestExecutionListener.class
})
public class GenericDaoTest {

    @Test
    public void testFind() {
    }

    @Configuration
    @ComponentScan("com.myComp.user")
    @ImportResource({
        "classpath*:/META-INF/spring/*.xml",
        "classpath*:META-INF/spring/datasource-testcontext.xml"
    })
    public static class SpringConfig {
    }

}