Использование инъекции внутри @обеспечивает метод в Dagger

#java #dependency-injection #dagger

#java #внедрение зависимостей #dagger

Вопрос:

У меня есть простой сервис:

 public class AccountService implements IAccountService {

    @Inject
    IAccountDAO accountDAO;

}
  

Этот класс предоставляется моим модулем:

 @Module(library = true )
public class ServiceModule {
    @Provides @Singleton
    IAccountService provideAccountStoreService(IAccountDAO accountDAO) {
        IAccountService service= new AccountService();
        //Somehow set the accountDAO inside service
        return service;
    }

    @Provides @Singleton
    IAccountDAO accountDAO provideAccountDAO() {
        return new AccountDAO();
    }

}
  

Есть ли способ заставить dagger выполнять инъекцию в «сервис» после того, как я верну его и до того, как он будет введен в какой-либо другой объект?

Ответ №1:

Хорошо, это было проще, чем я думал (и на самом деле показано в качестве примера на домашней странице dagger):

 @Module(library = true )
public class ServiceModule {
    @Provides @Singleton
    IAccountService provideAccountStoreService(AccountService service) {
        return service;
    }

    @Provides @Singleton
    IAccountDAO accountDAO provideAccountDAO() {
        return new AccountDAO();
    }

}