Предположим, у меня есть интерфейс под названием SocialNetworkService
, а три варианта реализации - TwitterService
, FacebookService
и FriendFeedService
.Инъекционный список объектов в CDI (Weld)
Теперь я хочу, всякий раз, когда мой управляемый компонент (или любой другой веб-компонент) получает сообщение, делиться им во всех социальных сетях. Я пробовал:
@Inject private List<SocialNetworkService> socialNetworkServices;
Но это не сработало (ошибка развертывания). (Также пытался определить @Any
- тот же результат)
Итак, есть ли способ внедрить список всех (или некоторых) реализаций интерфейса?
Я знаю правило, что данная точка инъекции не должна иметь более одного возможного компонента. Наверное, я могу добиться этого, создав производителя, который создает список, и используя Instance<SocialNetworkService>
, но это слишком похоже на эту задачу.
Хотите оставаться чистой JSR-330? –
330 и 299 .. Это должно быть достаточно – Bozho