J'ai recherché ici, mais je n'ai pas trouvé de réponse.Utilisation de @Inject avec le type générique
Dans mon application, j'ai une classe principale abstraite pour mes contrôleurs, avec quelques méthodes et propriétés. Et je veux injecter le dao automatiquement.
abstract class AbstractController<E extends AbstractEntity, D extends AbstractDAO<E>> {
@Inject
private D dao;
// getters and setters
}
abstract class AbstractDAO<E extends AbstractEntity> {
@PersistentContext
private EntityManager em;
// finds returns E
}
// implemenation/usage
class CarController extends AbstractController<Car, CarDAO> {
}
Obtenir l'exception:
org.jboss.weld.exceptions.DefinitionException: WELD-001407 Cannot declare an injection point with a type variable: [field] @Inject private AbstractController.dao
utilisant: Glassfish 3.1 et JSF 2.1. Existe-t-il une solution de rechange, alternative, pour cela?
Merci.
Est-ce que 'D' est un EJB (un bean géré)? –
En utilisant des beans gérés EJB session (sans état ou avec état), je peux obtenir une instance en utilisant InitialContext.lookup dans la méthode get. Mais je veux utiliser une injection comme @Dependent. Tu as une meilleure idée pour moi? – rogeriolino
Guice est capable de gérer ce genre de choses. – ysdx