본문 바로가기

안드로이드/DI

(3)
Service Locator Service Locator 방식은 수동으로 의존성을 주입해주는 방식이다.위와 같이 각 클래스를 ServiceLocator 클래스에 정의해둔 뒤, 싱글톤인 Application 클래스에 초기화 해주고 Application에서 가져다가 직접 주입해주는 방법으로 이루어진다. class Aclass Bclass Cclass ServiceLocator{ private val a = A() private val b = B() private val c = C() fun getA() = a fun getB() = b fun getC() = c}class MyApplication: Application() { override fun onCreate() { super.onCreate() s..
[안드로이드] Hilt Hilt는 DI 라이브러리 중 하나로 기존에 존재하던 의존성 주입 라이브러리인 Dagger를 보다 쉽게 사용할 수 있도록 만든 도구입니다. Hilt의 목표 Android App을 위한 Dagger 관련 인프라 간소화 표준화 된 컴포넌트 세트와 스코프로 앱 간의 설정, 가독성 및 이해도, 코드 공유를 쉽게 만들기 앱 간의 설정, 가독성 및 코드 공유를 용이하게 하기 위한 표준 컴포넌트 및 스코프 생성 쉬운 방법으로 다양한 빌드 타입에 대해 다른 바인딩 제공 특징 Dagger2 기반 라이브러리 표준화된 Dagger2 사용법 제시 보일러플레이트 코드 감소 프로젝트 설정 간소화 쉬운 모듈 탐색과 통합 개선된 테스트 환경 Android Studio의 지원 AndroidX 라이브러리의 호환 종속 항목 추가 buil..
[안드로이드] Dependency Injection (DI) DI는 Dependency Injection의 약자로 의존성 주입이라고 한다. 의존성이란? 의존성은 하나의 클래스에서 다른 객체를 참조하는 것을 말한다. 다음 예시를 보면 class A { val B_Class = B() } class B { ... } 클래스 A가 B를 참조하고 있다. 이때 우리는 클래스 A가 B를 의존하고 있다고 한다. DI (의존성 주입) 의존성이 높으면 유지보수 및 테스트가 어려워진다. 따라서 클래스 내부에서 객체를 참조하는 것이 아닌 외부에서 참조시켜주는 것을 의존성 주입, DI라고 한다. 방법은 다음과 같다. A, B 클래스 외의 새로운 매개체를 하나 생성한 뒤, 그 매개체를 통해서 의존성을 관리해주는 것이다. 이 매개체를 Inversion Of Control ( IOC ) 이..