핀수로그
  • [Android] Hilt와 Room
    2023년 09월 29일 12시 07분 10초에 업로드 된 글입니다.
    작성자: 핀수
    728x90
    반응형

    의존성 주입도구인 Hilt를 사용중이었기 때문에 Room 또한

    Hilt를 통해 생성하고 사용할 수 있도록 셋팅하는 시간을 가져보았다.

    Hilt에 관한 자세한 것은 아래 링크를 참고하면 된다.

     

    [Android] Hilt 적용해보기

    들어가며 DI (Dependecy Injection)에 대해서는 어느정도 들어보거나 또는 알 것이라고 생각한다. 한번 더 짚고 넘어가자면 의존 관계에 있는 클래스의 객체를 외부로부터 생성하여 주입받는 것을 의

    www.pinslog.com

    Hilt를 통해 Database 생성

    @InstallIn(SingletonComponent::class)
    @Module
    class DatabaseModule {
        @Provides
        @Singleton
        fun provideAppDatabase(@ApplicationContext context: Context) =
            Room.databaseBuilder(context, AppDatabase::class.java, "sample_db")
                .fallbackToDestructiveMigration().build()
    
        @Provides
        fun provideUserDao(appDatabase: AppDatabase) = appDatabase.userDao()
    }

    @InstallIn(SingletonComponent::class)

    인스턴스의 생명주기를 결정

    application, activity, fragment등 이 될 수 있다.

    싱글톤의 경우 해당 애플리케이션이 실행되는 동안 같은 인스턴스를 사용한다는 의미가 된다.

    리소스를 많이 사용하기 때문에 싱글톤으로 만들라는 room의 규칙과 일맥상통한다.

    @Module

    추상 클래스인 AppDatabase 는 바로 inject해서 사용할 수 없음

    hilt가 추상 클래스가 어디에 구현되어 있는지 모르기 때문

    그래서 해당 어노테이션을 통해 여기서 구현해주어야 hilt가 구현부를 찾아갈 수 있다고 한다.

    @Provides

    Module을 구현하는 방법에는 Providers와 Binds 두가지가 있다.

    외부라이브러리에는 Binds를 사용할 수 없다고 한다.

      @Singleton

      해당 모듈을 싱글톤으로 만들겠다.


      공부하며 작성된 글이라 잘못된 정보가 있을 수 있습니다.

      말씀해주시면 수정하겠습니다. 감사합니다.

      References

      아래 글을 참고하여 작성 되었습니다.

       

      5. Room with Hilt

      Room with Hilt

      velog.io

       

      728x90
      반응형

      'Android' 카테고리의 다른 글

      GPS 보정하기 - 03  (0) 2023.11.22
      GPS 보정하기 - 02  (0) 2023.11.20
      GPS 보정하기 - 01  (0) 2023.11.02
      GPS 보정하기 - 프롤로그  (0) 2023.11.01
      Clean Architecture를 이해하기 위해 알아보는 SOLID 원칙  (0) 2023.03.07
      댓글