В моем приложении много тестов интеграции на основе Unitils, в котором используется @SpringApplicationContext
(с различными весенними xmls из разных модулей). Чтобы уменьшить количество создаваемых весенних контекстов, мы планировали создать базовый тестовый класс и инициализировать весенний контекст только из этого базового класса и сделать все остальные тесты для расширения этого базового класса.Spring xml инициализирует beans-компоненты при объявлении в дочернем классе, но если то же самое объявлено в инициализации компонента родительского класса, то происходит сбой
базовый класс:
com.org.module1.mypack;
@SpringApplicationContext ({ "весна-module1.xml", "весна-module2.xml", "весенне-module3.xml"}) общественного абстрактного класса BaseTest { ... }
класс ребенка до изменения:
com.org.module1.mypack.performance;
@SpringApplicationContext ({ "весна-module4.xml"}) общественного класса ChildTest простирается BaseTest { .. }
базового класса после изменения:
com.org.module1.mypack;
@SpringApplicationContext ({ "весна-module1.xml", "весна-module2.xml", "весенне-module3.xml", "весна-module4.xml"}) общественного абстрактного класса BaseTest { ... }
класс ребенка после изменения:
com.org.module1.mypack.performance;
// @ SpringApplicationContext ({ "весна-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 находился в дочернем классе, контекст был создан нормально, и все тесты выполнялись как обычно.
Примечание: все файлы весны xml находятся в src/main/resources, кроме spring-module4.xml находится в src/test/resources
'NoSuchBeanDefinitionException' явно выражает, что родительский класс не имеет видимости MyBean. Это звонит кому-нибудь? – EmeraldTablet