Взгляните на "todo ‑ mvp ‑ dagger" схем архитектуры Android здесь: https://github.com/googlesamples/android-architecture.
Я пытаюсь понять реализацию Dagger2 и не могу понять, как они заставляют Dagger2 предоставлять TasksRepository.
У них есть @Provides
для "provideTasksLocalDataSource" и "provideTasksRemoteDataSource", но где он для фактического TaskRepository?
В классе TodoApplication у них есть это:
@Inject
TasksRepository tasksRepository;
Как он может внедрить это без @Provides для него где-нибудь?
Если я попытаюсь использовать тот же подход в моем собственном приложении, я получаю эту ошибку:
не может быть предоставлен без аннотированного метода @ Provides- или @ Produces
Поэтому я стал искать везде в коде Blueprints, но не могу понять, как они это сделали сами. Есть ли какая-то уловка, позволяющая им не иметь @Provides
? Это определенно строится, поэтому они как-то обошли это стороной.
Кто-то задал тот же вопрос на самой странице github, но на момент написания нет ответов. https://github.com/googlesamples/android-architecture/issues/561.
Я использую последний коммит, который на момент написания был «082bd72d62472f9caadd2979046067fb928bbfef».