如果要自动连线所有扩展的bean,
TaskService也许应该将自动连线字段更改为
List:
@Component public class TaskScheduler<T extends TaskService>{ @Autowired private List<T> taskService;}这样,Spring应该放入
List所有可扩展的自动装配bean
TaskService。
编辑 :由于您想从动力学上选择
TaskService我发现的唯一方法的类型,因此,如下所示。首先,重新定义您的
TaskScheduler:
public class TaskScheduler <T extends TaskService>{ private T taskService; public void setTaskService(T taskService) { this.taskService = taskService; }}您的
TaskService子类和相关子类应保持不变。按如下所示设置配置类:
@Configurationpublic class TaskConf { @Autowired private FirstTaskService firstTaskService; @Autowired private SecondTaskService secondTaskService; @Bean public TaskScheduler<FirstTaskService> firstTaskServiceTaskScheduler(){ TaskScheduler<FirstTaskService> t = new TaskScheduler<>(); t.setTaskService(firstTaskService); return t; } @Bean public TaskScheduler<SecondTaskService> secondTaskServiceTaskScheduler(){ TaskScheduler<SecondTaskService> t = new TaskScheduler<>(); t.setTaskService(secondTaskService); return t; }}然后
TaskScheduler以这种方式测试您的:
@AutowiredTaskScheduler<firstTaskService> ts;



