springboot applicationContext.getBean()注解形式实现多个类继承抽象类实现调用请举例
时间: 2024-09-12 16:03:44 浏览: 68
Spring Boot 的 `@Autowired` 注解配合 `applicationContext.getBean()` 可以方便地通过依赖注入来获取实现了特定抽象类或接口的子类实例。当需要处理一个抽象类或者接口的业务场景,并且有多个子类实现时,可以这样做:
首先,我们定义一个抽象类或接口:
```java
public abstract class AbstractService {
public void doSomething() {
// 具体操作由子类实现
}
}
```
然后,有两个具体的子类分别实现这个抽象类:
```java
@Service
public class ServiceA extends AbstractService {
@Override
public void doSomething() {
System.out.println("Doing something in Service A");
}
}
@Service
public class ServiceB extends AbstractService {
@Override
public void doSomething() {
System.out.println("Doing something in Service B");
}
}
```
在某个需要使用这些服务的地方,你可以这样编写代码:
```java
@Autowired
private AbstractService service;
public void process() {
// 使用ApplicationContext获取bean
ApplicationContext context = SpringApplication.run(MyApplication.class).getBeanFactory();
// 获取到的是实现了AbstractService的实际子类实例
AbstractService concreteService = context.getBean(AbstractService.class);
// 调用doSomething方法,实际执行的是对应子类的实现
concreteService.doSomething();
// 这里可以根据实际情况判断concreteService的类型并调用相应的方法
}
```
阅读全文