Inyección Dropwizard HK2
Soy bastante nuevo en trabajar con Dropwizard. Actualmente estoy tratando de implementar la inyección de dependencia HK2. Eso funciona bastante bien dentro de un recurso, pero no funciona fuera de un recurso. Esto es lo que estoy haciendo:
Client client = new JerseyClientBuilder(environment).using(configuration.getJerseyClientConfiguration()).build("contentmoduleservice");
//DAOs
ContentModuleDAO contentModuleDAO = new ContentModuleDAO(hibernate.getSessionFactory());
ModuleServedDAO moduleServedDAO = new ModuleServedDAO(hibernate.getSessionFactory());
//Manager
ContentModuleManager moduleManager = new ContentModuleManager();
EntityTagManager eTagManager = new EntityTagManager();
ProposalManager proposalManager = new ProposalManager(client, configuration);
environment.jersey().register(new AbstractBinder() {
@Override
protected void configure() {
bind(eTagManager).to(EntityTagManager.class);
bind(contentModuleDAO).to(ContentModuleDAO.class);
bind(moduleServedDAO).to(ModuleServedDAO.class);
bind(proposalManager).to(ProposalManager.class);
bind(moduleManager).to(ContentModuleManager.class);
}
});
Creo una instancia de las clases que quiero que sean inyectables y las vinculo.
Dentro de mi recurso funciona la inyección:
@Api
@Path("/api/contentmodule")
public class ContentModuleResource {
static final Logger LOG = LoggerFactory.getLogger(ContentModuleResource.class);
static final int MAX_PROPOSALS_PER_MODULE = 10;
@Inject
private ContentModuleDAO contentModuleDAO;
@Inject
private EntityTagManager eTagManager;
@Inject
private ProposalManager proposalManager;
@Inject
private ContentModuleManager contentModuleManager;
Todas estas variables se completan con una instancia de la clase correcta.
El problema es: ContentModuleManager también debería obtener algunas de estas clases mediante inyección:
public class ContentModuleManager {
@Inject
private ContentModuleDAO contentModuleDAO;
@Inject
private ProposalManager proposalManager;
@Inject
private ModuleServedDAO moduleServedDAO;
Pero esos son nulos. ¿Alguien puede explicar a un novato de Dropwizard por qué sucede esto y cómo puedo solucionarlo? :RE
¡Gracias!