Новая версия ответа @ kaybee99, но теперь возвращающая то, что просит пользователь: реализации ...
Spring имеет довольно простой способ добиться этого:
public interface ITask {
void doStuff();
default ITask getImplementation() {
return this;
}
}
@Component
public class MyTask implements ITask {
public void doStuff(){}
}
Затем вы можете автоматически связать список типа ITask
, и Spring заполнит его всеми реализациями:
@Service
public class TaskService {
@Autowired(required = false)
private List<ITask> tasks;
if ( tasks != null)
for (ITask<?> taskImpl: tasks) {
taskImpl.doStuff();
}
}