我正在尝试将Dagger 2 DI应用于我们的多库模块项目(有30个模块,并且会不断增长),每个库模块都依赖build.gradle文件中的其他几个模块,例如: gradle实施项目(“:core”)。
我们有主模块:app ,其中包含应用程序类并包含每个库模块。
所以我决定在:app 模块中将有一个单例组件,其中将包括以下所有模块。
@Component(modules = [
AppModule::class,
AndroidSupportInjectionModule::class,
ViewModelFactoryModule::class,
BusinessModule::class,
BusinessRepositoryModule::class,
BusinessDetailFragmentModule::class,
BusinessCollectionVerticalFragmentModule::class
])
@Singleton
interface AppComponent {
@Component.Builder
interface Builder {
@BindsInstance
fun application(application: Application): Builder
fun build(): AppComponent
}
fun inject(mainApplication: MainApplication)
}
我有4个业务模块的原因是
BusinessModule是一个抽象类,其中包含该库模块中的所有活动和视图模型。
BusinessRepositoryModule提供了存储库实例(稍后将替代模拟存储库)。
问题是,我只介绍了两个库模块,现在已经很凌乱了。 管理如此规模的项目模块的正确方法是什么?
答案 0 :(得分:0)
您正在调用应用程序级别的所有组件。在应用程序级别使用所有组件的效率很低。制作单独的组件,并使用@scope表示法将组件的生命周期绑定到活动。