Недавно я попытался перенести проект с шаблоном внедрения зависимостей, используя Dagger 2 из структуры monolithi c в модульную форму.
Я видел разные примеры и лучшие практики, и, наконец, я решил иметь три разных независимых модуля, а именно:
Приложение Модуль ( Этот модуль скоро будет разделен на функциональные модули :))
Core Модуль (Предоставление глобальных данных, используя в приложениях и функциональных модулях)
Сеть Модуль (Обеспечить интерфейс запросов на модернизацию и API)
График зависимостей модуля выглядит следующим образом:
Оба Компоненты Core и Network имеют @ Singelton областей и app Компонент имеет @ AppScope (аналогично @ Singleton ).
CoreComponent:
@Singelton
@Component(modules = {
CoreModule.class,
PersistenceModule.class
}) public interface CoreComponent {
@Component.Builder
interface Builder {
CoreComponent build();
@BindsInstance
Builder application(Application application);
}
DBHelper provideDbHelper();
}
NetworkComponent
@Singleton
@Component(modules = {
AuthenticationModule.class,
})public interface NetworkComponent {
interface Builder {
NetworkComponent build();
}
UserManager provideUserManager();
TokenManager provideTokenManager();
}
AppComponent
@AppScope
@Component(
dependencies = {
CoreComponent.class,
NetworkComponent.class
},
modules = {
//Modules
}
)public interface AppComponent extends AndroidInjector<DaalApplication> {
@Component.Builder
interface Builder {
Builder coreComponent(CoreComponent coreComponent);
Builder networkComponent(NetworkComponent networkComponent);
@BindsInstance
Builder daalApplication(DaalApplication daalApplication);
AppComponent build();
}
}
Но я получаю следующую ошибку:
@xxx.AppScope xxx.AppComponent зависит от нескольких компонент области действия
Я также заменил @ AppScope на @ Singelton , но не работает, единственная работающая ситуация - сделать одно из Core или Сеть Область видимости Нет области действия .
Есть ли какие-либо приемы, которые можно использовать для добавления более одного компонента в компонент приложения зависимости?
Если ответ нет , что-то не так с моим модульным дизайном?
Я пытаюсь создать независимые модули для повторного использования в различных проекты.