https://dagger.dev/hilt/application


5.2 Core APIs – Hilt Application

Gradle 플러그인을 사용하는 것을 가정하고 설명하고 있다. 만약 플러그인을 사용하지 않는다면 Gradle 설정하기 섹션을 참조하자.

Hilt Application

Hilt를 사용하는 모든 앱은 @HiltAndroidApp이 달린 Application 클래스를 포함해야 한다. @HiltAndroidApp은 Hilt 컴포넌트의 코드 생성과 컴포넌트를 사용하는 Application의 기본 클래스를 생성하게 된다. 코드 생성에는 모든 모듈에 대한 액세스 권한이 필요하므로 Application 클래스를 컴파일하는 대상에는 전이 의존성에 모든 Dagger 모듈이 있어야 한다.

@AndroidEntryPoint가 달린 다른 안드로이드 프레임워크 클래스와 마찬가지로 Application에도 멤버 주입이 된다. 이는 super.onCreate()가 호출 된 후 Application의 필드에 의존성 주입이 이루어지는 것을 의미 한다.

예를 들어 일반적인 Dagger 사용시 MyApplication이 MyBaseApplication을 상속하는 구조이면서 멤버 변수로 Bar를 가지고 있다고 가정해보자.

class MyApplication : MyBaseApplication() {
    @Inject lateinit var bar: Baroverride fun onCreate() {
        super.onCreate()

        val myComponent =
            DaggerMyComponent.builder()
                ...
                .build()

        myComponent.inject(this)
    }
}

앞에서 살펴본 코드는 Hilt를 사용하면 다음과 같이 멤버 주입이 된다.

@HiltAndroidApp
class MyApplication : MyBaseApplication() {
    @Inject lateinit var bar: Bar
    override fun onCreate() {
        super.onCreate() // super.onCreate()에서 의존성 주입을 하게 된다.
        // 여기에서 bar 변수를 사용할 수 있다.
    }
}
카테고리: Dagger2

0개의 댓글

답글 남기기

Avatar placeholder

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.