Хорошо, нашел ошибку. У некоторых из этих классов были конструкторы, в которых не было внедрения зависимостей. Теперь это работает как шарм! Спасибо!

ольно новый в работе с 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

Спасибо!

Ответы на вопрос(1)

Ваш ответ на вопрос