Digamos que tengo una interfaz llamada SocialNetworkService
, y tres implementaciones: TwitterService
, FacebookService
y FriendFeedService
.Inyectar lista de objetos en CDI (Weld)
Ahora quiero, siempre que mi bean administrado (o cualquier componente web) reciba un mensaje, para compartirlo en todas las redes sociales. Intenté:
@Inject private List<SocialNetworkService> socialNetworkServices;
Pero no funcionó (error de despliegue). (También se intentó el calificador @Any
- mismo resultado)
Entonces, ¿hay alguna manera de insertar una lista de todas (o algunas) implementaciones de una interfaz?
Conozco la regla de que un punto de inyección determinado no debe tener más de un bean posible. Supongo que puedo lograrlo creando un productor que produzca la lista y usando Instance<SocialNetworkService>
, pero eso parece demasiado para esta tarea.
desea permanecer pura JSR-330? –
330 y 299. Eso debería ser suficiente – Bozho