springboot 可以在类中使用 @autowired 注入抽象类的所有实现类吗
时间: 2024-05-12 09:13:30 浏览: 259
可以的。当一个抽象类有多个实现类时,Spring 会将这些实现类都注入进去,可以使用 `@Autowired` 注解配合 `List` 或 `Map` 使用。例如:
```
public abstract class AbstractService {
public abstract void doSomething();
}
@Service
public class Service1 extends AbstractService {
@Override
public void doSomething() {
System.out.println("Service1 doSomething");
}
}
@Service
public class Service2 extends AbstractService {
@Override
public void doSomething() {
System.out.println("Service2 doSomething");
}
}
@Component
public class MyComponent {
@Autowired
private List<AbstractService> services;
public void doSomething() {
for (AbstractService service : services) {
service.doSomething();
}
}
}
```
在 `MyComponent` 类中,通过 `@Autowired` 注入了 `List<AbstractService>` 类型的 `services` 属性,Spring 会将所有实现 `AbstractService` 的类都注入进来,可以通过遍历 `services` 调用它们各自的方法。
阅读全文