Хорошо, нашел ошибку. У некоторых из этих классов были конструкторы, в которых не было внедрения зависимостей. Теперь это работает как шарм! Спасибо!
ольно новый в работе с dropwizard. В настоящее время я пытаюсь реализовать внедрение зависимостей HK2. Это прекрасно работает внутри ресурса, но не работает вне ресурса. Вот что я делаю:
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);
}
});
Я создаю экземпляры классов, которые хочу быть инъекционными, и связываю их.
Внутри моего ресурса работает инъекция:
@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;
Все эти переменные заполнены экземпляром правильного класса.
Проблема в том, что ContentModuleManager также должен получать некоторые из этих классов посредством инъекции:
public class ContentModuleManager {
@Inject
private ContentModuleDAO contentModuleDAO;
@Inject
private ProposalManager proposalManager;
@Inject
private ModuleServedDAO moduleServedDAO;
Но это ноль. Может кто-нибудь объяснить dropwizard нуб, почему это происходит и как я могу это исправить? : D
Спасибо!