Dagger Scope问题

问题描述 投票:0回答:1

我试图设置匕首提供数据模块,但我一直遇到这个错误:

错误:@Modules不能作用域。你的意思是改变方法的范围吗? @ javax.inject.Singleton()^

这是罪魁祸首模块:

package com.bottlerocket.dependancyinjection.modules


import android.content.Context
import androidx.room.Room
import com.bottlerocket.dependancyinjection.DI
import com.data.api.BottleRocketApi
import com.data.cache.StoreCache
import com.data.database.CacheDataStoreObject
import com.data.database.RemoteStoreDataObject
import com.data.database.StoreDatabase
import com.data.repository.StoreRepositoryImplementation
import dagger.Module
import dagger.Provides
import interfaces.StoresRepository
import javax.inject.Named
import javax.inject.Singleton

@Module
@Singleton
class DataModule {

    @Singleton
    @Provides
    fun provideRoomDatabase(context: Context): StoreDatabase {
        return Room.databaseBuilder(
            context,
            StoreDatabase::class.java,
            "stores_db"
        ).build()
    }

    @Provides
    @Singleton
    fun provideStoreRepository(
        api: BottleRocketApi,
        @Named(DI.inMemoryCache) cache: StoreCache
    ): StoresRepository {

        val cachedMoviesDataStore = CacheDataStoreObject(cache)
        val remoteMoviesDataStore = RemoteStoreDataObject(api)
        return StoreRepositoryImplementation(cachedMoviesDataStore, remoteMoviesDataStore)
    }
}
android dependency-injection dagger
1个回答
1
投票

如错误所示,您不能使用@Singleton注释模块,只能注释函数。因此,您只需从模块中删除注释即可。

更改

@Module
@Singleton
class DataModule {
}

@Module
class DataModule {
}

这项检查是在最新版本的Dagger中引入的。

© www.soinside.com 2019 - 2024. All rights reserved.