패스잇
모바일 개발 · 중급

Android에서 Hilt(또는 Dagger Hilt)를 사용하여 의존성 주입(DI)을 구현할 때, @Inject, @Module, @Provides 어노테이션의 역할과 사용 방법에 대해 설명하고, 빌드 타임에 어떻게 의존성 그래프가 생성되는지 간략하게 설명해 주세요.

힌트 · @Inject는 생성자/필드 주입, @Module과 @Provides는 외부 라이브러리나 인터페이스에 대한 의존성을 제공합니다. 컴파일 시 코드 생성 원리를 간략히 언급하세요.

@Inject@Module@Provides의존성 그래프컴파일 타임

모범답안

Hilt에서 의존성 주입을 할 때, @Inject, @Module, @Provides 어노테이션은 중요한 역할을 합니다.

@Inject는 Hilt에게 해당 클래스의 인스턴스를 주입해 달라고 요청하는 어노테이션입니다. 주로 생성자 주입이나 필드 주입에 사용됩니다. 예를 들어, 클래스 생성자에 @Inject를 붙이면 Hilt가 필요한 의존성을 자동으로 주입해줍니다.

@Module은 의존성을 제공하는 방법을 정의하는 클래스에 붙이는 어노테이션입니다. 주로 외부 라이브러리나 인터페이스처럼 직접 생성자를 수정할 수 없는 경우에 사용합니다.

@Provides는 @Module 안에서 특정 타입의 인스턴스를 어떻게 생성하고 제공할지 정의하는 메서드에 붙이는 어노테이션입니다.

Hilt는 컴파일 타임에 이러한 어노테이션들을 분석하여 의존성 그래프를 생성합니다. 이 그래프는 애플리케이션 내의 모든 의존 관계를 나타내며, Hilt는 이 그래프를 기반으로 필요한 의존성을 자동으로 주입해줍니다. 컴파일 시점에 코드를 생성하여 런타임 성능 저하를 최소화하는 것이 특징입니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 Android / Kotlin 면접 질문

← Android / Kotlin 면접 질문 전체 보기