컴포넌트와 서브컴포넌트

hilt 컴포넌트 서브 컴포넌트.PNG

서브컴포넌트는 부모 컴포넌트의 의존성을 상속받는 하위 컴포넌트이다.

위 그림을 보면 알다시피 SingletonComponent를 제외 하고는 전부다 SingletonComponent의 서브 컴포넌트이다.

hilt에서 서브 컴포넌트를 인스턴스화 하는건 아주 간단하다 Android class에 @AndroidEntryPoint를 선언 하는것이다.

AndroidEntryPoint

위 그래프를 보면 알다시피 Activity,Fragment,View,Service 등을 지원한다. 하지만 사용시 주의 사항이 있는데 안드로이드 클래스에서 의존성 주입시, 상위 (서브)컴포넌트에도 반드시 @AndroidEntryPoint 선언 해야한다.

ComponentActivity를 상속한 Activity만 지원

androidx 라이브러리에 포함된 Fragment만 지원

FragmentBinding with View

compose를 사용하면 상관은 없겠지만 XML로 작업하면서 Fragment에 View를 주입 하기 위해서는 @AndroidEntryPoint 뿐만 아니라 별도의 어노테이션을 추가 해줘야 한다. 그것이 바로 @WithFragmentBindings 이다.

Fragment에 뷰를 확장하고 커스텀 뷰를 만들게 되면 이 @WithFragmentBinding 어노테이션을 사용해야 한다.