방명록
- [Android] Hilt와 Room2023년 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 다음글이 없습니다.이전글이 없습니다.댓글