Spring xml在子类中声明时初始化bean,但如果在父类中声明相同,则bean初始化失败

时间:2014-01-23 09:23:22

标签: spring unitils

我的应用程序中有很多基于Unitils的集成测试类,它使用@SpringApplicationContext(来自不同模块的不同spring xmls)。为了减少正在创建的spring上下文的数量,我们计划创建一个基本测试类,并仅从该基类初始化spring上下文,并使所有其他测试扩展此基类。

基类:

  

com.org.module1.mypack;

     
    

@SpringApplicationContext({“spring-module1.xml”,“spring-module2.xml”,“spring- module3.xml”})     公共抽象类BaseTest {         ...         }

  

更改前的子课程:

  

com.org.module1.mypack.performance;

     
    

@SpringApplicationContext({“spring-module4.xml”})     公共类ChildTest扩展BaseTest {         ..         }

  
更改后的

基类:

  

com.org.module1.mypack;

     
    

@SpringApplicationContext({“spring-module1.xml”,“spring-module2.xml”,“spring-module3.xml”,“spring-module4.xml”})     公共抽象类BaseTest {         ...         }

  

更改后的子课程:

  

com.org.module1.mypack.performance;

     
    

// @ SpringApplicationContext({“spring-module4.xml”})     公共类ChildTest扩展BaseTest {         ..         }

  

现在我收到以下错误消息并且未创建我的上下文: org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [com.org.module5.prepare.MyBean] 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), @org.springframework.beans.factory.annotation.Qualifier(value=myBean)}

当spring-module4.xml在子类中时,正常创建上下文并像往常一样执行所有测试。

注意:所有spring xml文件都在src / main / resources中,但spring-module4.xml在src / test / resources中除外

1 个答案:

答案 0 :(得分:0)

默认情况下,类的注释不会被继承,除非它们的定义中包含@Inherited。