抽象类的子类可以注入bean嘛
时间: 2023-07-06 21:19:19 浏览: 104
是的,抽象类的子类也可以被注入到Spring Bean中。
在Spring中,可以将抽象类标记为`@Component`或`@Service`等注解来创建Bean。同时,抽象类的子类也可以标记为`@Component`或`@Service`等注解来创建Bean,并指定其父类为抽象类。
例如,假设我们有一个抽象类`Animal`,并且我们希望将其注入到一个bean中并使用它。我们可以编写以下代码:
```java
@Component
public abstract class Animal {
public abstract void makeSound();
}
@Component
public class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("Woof!");
}
}
@Component
public class AnimalService {
private final Animal animal;
@Autowired
public AnimalService(Animal animal) {
this.animal = animal;
}
public void makeAnimalSound() {
animal.makeSound();
}
}
```
在这个例子中,我们定义了一个抽象类`Animal`,并让`Dog`类继承它。我们还定义了一个`AnimalService`类,该类使用`@Autowired`注解自动装配一个`Animal`类型的bean。在`makeAnimalSound`方法中,我们调用`animal.makeSound()`方法来使动物发出声音。
当我们运行`AnimalService`的实例时,Spring会自动将`Dog`类的实例注入到`AnimalService`中,因为它是`Animal`类的子类。
这样,我们就可以使用抽象类的子类注入bean并使用它。
阅读全文