У меня есть Bean, который хочет, чтобы ввести его дочерние классы, как так:С весной, как я могу вставить дочерний компонент в родительский компонент?
Родитель:
package test;
@Component
public class Parent {
@Autowired
Child child;
public Child getChild() {
return child;
}
}
Ребенок:
package test;
@Component
public class Child extends Parent {
}
Это приводит к следующей ошибке:
org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [test.Child] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency
Извлечение бит extends Parent
вызывает все t o работайте так, как ожидалось, поэтому похоже, что Spring не может найти Ребенка, как будто родитель как-то затеняет его. Как настроить Spring для правильной проводки этих дочерних экземпляров? Я использую конфигурацию класса Java, как следующее:
@Configuration
@ComponentScan(basePackages = "test")
public class AppConfig {
}
Я пытался играть вокруг с @Qualifier
аннотацию и назначая различные имена в пределах AppConfig
, как и в дальнейшем, что не помогло:
@Bean(name = "parent")
public Parent parent() {
return new Parent();
}
@Bean(name = "child")
public Child child() {
return new Child();
}
Я не уверен, что недостающий ингредиент предназначен для того, чтобы заставить Spring увидеть класс Child как свою отдельную сущность. Разве это невозможно?
Это не удается мне, @ user108471, с начальной ошибкой; Я использую Spring Boot 1.3.3 & JDK 8, который использует Spring 4.2.5 для Linux. –
@JanNielsen Извините, похоже, что я забыл другое, важное, изменение: добавление явного имени дочернему классу. – user108471