Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Jack 오답노트

Hilt 어노테이션 정리 본문

android

Hilt 어노테이션 정리

기릿 2023. 6. 20. 18:54

@HiltAndroidApp
Hilt 코드 생성. Application 클래스에 달아야 함

@HiltAndroidApp
class HiltApplication: Application() {
}

@AndroidEntryPoint
DI 컨테이너 추가. 주로 뷰에서 힐트를 이용한 뷰모델 초기화할 때 쓴다. Base에 선언하면 편하다

@AndroidEntryPoint
class MainActivity : AppCompatActivity() {

@Inject

1. 생성자 주입. 인스턴스를 제공하는 데 사용할 생성자와 형식에 어떤 종속성이 있는지 알려준다.

class ContentRepositoryImpl @Inject constructor(
    private val contentService: ContentService,
    private val contentDao: ContentDao
) : ContentRepository {

2. 필드 주입. @AndroidEntryPoint 주석이 달린 클래스의 필드를 채울때 쓰고 필드는 private 일 수 없다.

@AndroidEntryPoint
class MyActivity : AppCompatActivity() {
    @Inject lateinit var adapter: AnalyticsAdapter
}

 

@HiltViewModel
뷰모델 컴포넌트 알려줌. Repository module 에서 provide로 제공하기때문에 inject usecase 만 하면 접근가능하다.

@HiltViewModel
class MainViewModel @Inject constructor(
    private val contentUseCase: ContentUseCase
): ViewModel() {

 

@Module
생성자를 주입할 수 없는 유형에 대한 바인딩을 추가할 수 있는 클래스. 대거 그래프를 위해 작업.

@InstallIn
Hilt에서 생성된 DI 컨테이너(코드의 SingletonComponent) 모듈 바인딩을 사용할 수 있어야한다는 표시.

@Module
@InstallIn(SingletonComponent::class)
object RetrofitModule {
@Module
@InstallIn(ViewModelComponent::class)
object RepositoryModule {
    @Provides
    @ViewModelScoped
    fun providesViewModelRepository( ... )

@Provides
생성자를 주입할 수 없는 유형에 대한 바인딩 추가
 - 반환 유형은 바인딩 유형
 - 매개변수는 종속성
 - 인스턴스가 필요할 때마다 유형이 범위가 지정되지 않은 경우 함수 본문이 실행

@Singleton

뷰/뷰모델과 별개의 공간으로 어디서든 접근이 가능한 클래스. 그 외 Scope는 여기 참고

    @Provides
    @Singleton
    fun providesRetrofit(
        client: OkHttpClient.Builder,
        gsonConverterFactory: GsonConverterFactory
    ): Retrofit = ...

 

 

 

참고자료: https://developer.android.com/training/dependency-injection/hilt-cheatsheet?hl=ko

 

Hilt 및 Dagger 주석 요약본  |  Android 개발자  |  Android Developers

Hilt 및 Dagger 주석 요약본 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 이 요약본을 사용하면 다양한 Hilt 및 Dagger 주석의 역할 및 주석 사용 방법을 빠르게

developer.android.com

Comments