패스잇
모바일 개발 · 심화

Dagger 또는 Hilt에서 컴포넌트(Component)의 계층 구조가 필요한 이유와 이를 어떻게 설계하고 사용하는지 설명하고, 특정 스코프(예: @Singleton, @ActivityScoped)가 컴포넌트 계층 구조와 어떤 관계를 가지는지 설명해 보세요.

힌트 · 리소스 공유 및 생명주기 관리를 위한 계층 구조의 필요성을 설명하고, 각 스코프가 바인딩되는 컴포넌트의 생명주기와 일치함을 언급합니다.

의존성 격리스코프 관리컴포넌트 재사용서브컴포넌트의존성 그래프

모범답안

Dagger나 Hilt에서 컴포넌트 계층 구조가 필요한 이유는 크게 두 가지입니다. 첫째, 의존성 격리를 통해 특정 컴포넌트에서만 필요한 의존성을 분리하여 관리하고, 둘째, 메모리 누수를 방지하고 생명주기를 효과적으로 관리하기 위해서입니다.

예를 들어, Activity 컴포넌트는 Application 컴포넌트의 서브컴포넌트가 될 수 있습니다. 이렇게 하면 Activity에 필요한 의존성은 Activity 컴포넌트 내에서만 생성되고 관리되며, Activity가 종료될 때 함께 소멸됩니다.

스코프는 컴포넌트의 생명주기와 밀접하게 관련됩니다. @Singleton 스코프는 Application 컴포넌트와 같이 애플리케이션 생명주기 동안 유지되는 의존성에 사용되고, @ActivityScoped는 Activity 컴포넌트와 같이 Activity 생명주기 동안 유지되는 의존성에 사용됩니다. 스코프를 통해 의존성이 필요한 시점에 생성되고 불필요해지면 소멸되도록 관리할 수 있습니다. 컴포넌트 계층 구조와 스코프를 적절히 사용하면 의존성 관리를 효율적으로 할 수 있습니다.

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

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

함께 보는 Android / Kotlin 면접 질문

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