Android(Kotlin)

심기일전 코틀린! 04. Hilt (Dependency Injection)

E.I.T.U 2023. 7. 26. 18:23

Hilt는 구글에서 제공하는 Android용 의존성 주입 라이브러리이다.

Dagger를 기반으로 제작되었으며 Koin과 함께 가장 많이 쓰이는 DI 라이브러리 중 하나로 자리잡고 있다.

 

그런데, 의존성이란 대체 뭘까?

 

의존성이란 OOP(Object Oriented Programming - 객체 지향 프로그래밍)에서의 용어중 하나로써

어떤 객체가 다른 객체의 기능을 필요로 하는 경우, 두 객체 사이에 의존성이 존재한다고 할 수 있다.

 

예를 들어, Retrofit2 의 경우 Builder를 통해 객체를 생성할 때

client로써 OkHttpClient 객체를 필요로 하는데

이 경우, 두 객체 사이에 의존성이 존재한다고 할 수 있는것이다.

 

그렇다면 의존성 주입이란 무엇일까?

 

Retrofit을 사용해 통신하는 코드를 만들고자 할 때, 어떤 것들이 필요한지 생각해보자.

먼저 호출할 api를 가진 인터페이스를 객체화 해야하고

인터페이스를 객체화 하기 위해선 Retrofit을 객체화 해야하고

Retrofit을 객체화 하기 위해선 OkHttpClient를 객체화 해야한다.

 

만약 통신 관련 클래스를 여러개 만들어야 한다면 그 때 마다 위의 과정을 전부 클래스별로 적용해야 할 것이다.

 

이 때 필요한 것이 바로 Hilt를 통한 DI(Dependency Injection - 의존성 주입) 이다.

@Inject 와 같은 Annotation Processor를 사용하여

필요한 객체 생성을 컴파일 단계에 맡기는것이다.

 

이를 통해 우리는 클래스별로 객체를 매번 생성해 줄 필요 없이

간단한 어노테이션을 붙이는 것 만으로 생략할 수 있게 되는것이다.

 

다음 시간에는 이전 포스팅에서 다룬 이미지 검색 앱에

Hilt와 Retrofit을 사용하여 실제로 API를 호출하여 RecyclerView에 보여주는 코드를 작성하도록 하겠다.