刀柄 DI 的问题

时间:2020-12-20 10:18:04

标签: android kotlin dependency-injection dagger-hilt

对不起,我以前从未使用过匕首/刀柄。无法理解如何在我的应用程序中注入依赖项。这是现在所拥有的:

@InstallIn(Application::class)
@Module
abstract class RepositoryModule {
    @Binds
    abstract fun bindProductRepository(productRepository: ProductRepository): IProductRepository

    @Binds
    abstract fun bindCategoryStorage(categoryStorage: CategoryStorageImpl) : CategoryStorage

    companion object {
        @Provides
        @Singleton
        fun createRoomDataBase(@ApplicationContext context: Context) : ProductRoomDatabase = ProductRoomDatabase.getDatabase(context)

        @Provides
        @Singleton
        fun createProductDao(productRoomDatabase: ProductRoomDatabase) = productRoomDatabase.productDao()

        @Provides
        @Singleton
        fun createCategoryDao(productRoomDatabase: ProductRoomDatabase) = productRoomDatabase.categoryDao()
    }
}

2 个答案:

答案 0 :(得分:0)

有很多关于这个主题的课程和教程,但大多数只是改写了原始文档。我强烈建议您从官方 Android 网站阅读此文档 https://developer.android.com/training/dependency-injection/hilt-android

答案 1 :(得分:0)

刀柄带有三个预制组件:

ApplicationComponent | SingletonComponent - 包含应用程序级依赖项并一直持续到应用程序生命周期的组件。

ActivityComponent - 包含 Activity 级依赖项的组件

FragmentComponent - 包含 Fragment 级依赖项的组件

InstallIn 注释表明当前模块中的所有依赖项都将在注释的参数中可用。