Можно ли определить список интерфейсов с автопроводкой через аннотацию? - PullRequest
0 голосов
/ 25 марта 2020

Я хочу реализовать диспетчер при весенней загрузке с помощью этого простого кода:

public class MyDispatcher{

   @Autowired
   private List<MyListener> listeners;

   public void dispatch(){
      listeners.foreach(listener -> listener.dispatch());
   }

Можно ли добавить каждого слушателя, которого я определил в приведенном выше списке? Каждый слушатель будет делать что-то вроде:

@Component
public class AListener implements MyListener{
     ....

Ответы [ 2 ]

2 голосов
/ 25 марта 2020

Да, вы можете определить его с помощью varargs. Например:

public interface A {}
@Component
public class B implements A{}
@Component
public class C implements A{}

public class D {
private final List<A> listeners;
@Autowired
public D(A ... listeners) {
 this.listeners = Arrays.asList(listeners);
}  
public void dispatch(){
  listeners.foreach(listener -> listener.dispatch());
}
}
0 голосов
/ 25 марта 2020
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...