当前位置: 首页 > 知识库问答 >
问题:

无法在kotlin dagger2 mvvm中注入接口

寇坚成
2023-03-14

嗨,当我尝试在下面的类中注入Doa接口时,我正在使用mvvm和dagger2

@Singleton
class PodCastRepository @Inject constructor(private val dao: PodCastDao) {
}

我的接口类

interface PodCastDao {

    fun getLegoThemes(): LiveData<PodCast>

}

共有1个答案

管弘
2023-03-14

需要先提供一个数据库。然后在为dao提供的方法中返回dao

例如:

package com.test.demo.db

import androidx.room.Database
import androidx.room.RoomDatabase
import androidx.room.TypeConverters
import com.test.demo.model.entity.Movie
import com.test.demo.model.entity.Article
import com.test.demo.util.StringListConverter

@Database(entities = [Article::class,Movie::class],
    version = 3, exportSchema = false)

@TypeConverters(value = [StringListConverter::class/*, (IntegerListConverter::class),
    (KeywordListConverter::class), (VideoListConverter::class), (ReviewListConverter::class)*/])
abstract class AppDatabase : RoomDatabase() {
    abstract fun movieDao(): MovieDao
    abstract fun peopleDao(): ArticleDao
}



package com.test.demo.di

import android.app.Application
import androidx.annotation.NonNull
import androidx.room.Room
import com.test.demo.db.AppDatabase
import com.test.demo.db.MovieDao
import com.test.demo.db.ArticleDao
import dagger.Module
import dagger.Provides
import javax.inject.Singleton

@Module
class PersistenceModule {

  @Provides
  @Singleton
  fun provideDatabase(@NonNull application: Application): AppDatabase {
    return Room
      .databaseBuilder(application, AppDatabase::class.java, "Demo1.db")
      .allowMainThreadQueries()
      .build()
  }

  @Provides
  @Singleton
  fun provideMovieDao(@NonNull database: AppDatabase): MovieDao {
    return database.movieDao()
  }


  @Provides
  @Singleton
  fun providePeopleDao(@NonNull database: AppDatabase): ArticleDao {
    return database.peopleDao()
  }

}
 类似资料:
  • 我有一个有状态的会话作用域(CDI)EJB,它保存有关用户会话的信息。 现在,我想从一个 我从webapp直接访问EJB(使用注入)到我为JSF使用的bean中(它们也是CDI管理的bean)。 我面临的问题是,似乎与JSF bean处于不同的“会话范围”。创建了两个实例;一个从JSF实例化,另一个从HttpSessionListener实例化。 我尝试通过注入实例注入bean 这个bug报告建议

  • 问题内容: 我的测试课: 我在行上得到一个空指针异常: 在精确的给出空指针异常 如何使Junit类中的beanObject字段自动装配成为可能,以便可以使用“ BeanClass”类中的方法? 从评论中复制: 用简单的术语来说.. beanClass是具有某些方法的接口..我用 注释标记了该beanClass。.banClass 是由具有方法实现的beanClassImpl类实现的。.我需要在我的

  • 我正在开发一个spring boot应用程序,我遇到了一个问题。我正在尝试注入一个@Repository注释接口,但它似乎根本不起作用。我收到这个错误 实体类: 存储库接口: 控制器:

  • 我正在尝试将JMS队列注入到无状态EJB中。我的代码看起来是这样的: 当我试图将其部署到应用程序服务器(Wildfly 9.0.2)时,引发了以下异常 如果我将mappedName更改为远程JNDI名称,它就会起作用 或者我将无状态EJB切换到一个依赖的CDI Bean Wildfly配置如下所示: 那么,为什么不能将JMS队列注入到无状态EJB中,为什么它可以在CDI bean中工作呢?我做错了

  • 我在Quarkus有一个微服务,它使用AxonIq框架实现CQRS/事件来源。我已经用Spring Boot做了,一切都没问题。我想在Quarkus中迁移它,但我在maven编译过程中出错,可能是因为Ioc。当CDI尝试创建服务时,我认为他可以注入Axon CommandGateway和QueryGateway。 配置 服务: 控制器: 屬地

  • 我在使用StringRedisTemplate时出现了错误,日志信息如图: 看样子是注入失败,可是为什么会这样呢? 我的springboot版本是2.7,redis-data版本2.7. yml文件中的配置信息如下: 好像什么配置都有了,版本应该也不会冲突。。 大佬们求解啊。。