안드로이드

Dependency(의존성), Dependency Injection

코딩하는후운 2022. 6. 14. 20:11
반응형

# Dependency(의존성)

  • 코드에서 두 모듈간의 연결
  • 객체지향 언어에서는 두 클래스 간의 관계라고도 말함.
  • 일반적으로 둘 중 하나가 다른 하나를 어떤 용도를 위해 사용함

# Dependency가 위험한 이유

  • 하나의 모듈이 바뀌면 의존한 다른 모듈까지 변경이 이루어지기 때문
  • 테스트 가능한 어플을 만들 때 의존성이 있으면 유닛테스트 작성이 어려움

# DI란?

Dependency Injection의 약자로 의존성 주입을 의미합니다.
특정 객체의 인스턴스가 필요한 경우 이를 외부에서 생성하여 전달하는 기법.

# Dependency Injection(의존성 주입)이 필요한 이유

  • 위 Dependency가 위험한 이유를 해결하기 위해서 사용

# 클래스 외부에서 종속성을 제공하면 생기는 이점

  • 유닛 테스트가 쉬워진다.
  • 코드의 재활용성이 높아진다.
  • 객체간의 의존성을 없애 유연한 코드를 작성할 수 있다.
  • 보일러플레이트 코드를 줄일 수 있다.
  • 스코프를 이용해 객체를 효율적으로 관리할 수 있다.

 

# 의존성 주입을 도와주는 라이브러리

  1. Dagger2
    안드로이드 앱 뿐만 아니라 자바 앱에서도 동작되도록 디자인 되어 있음
    build타임에 DI 관련 class파일을 generate함
  2. Hilt
    Dagger를 기반으로 Dagger의 종속성 주입을 안드로이드 어플리케이션에 통합하는 표준 방법을 제공 (ex. SingletonComponent, ActivityComponent … 표준화된 방법을 제공)
    build타임에 DI 관련 class파일을 generate함
  3. Koin
    Kotlin DSL로 만들어짐
    -> java 코드는 사용불가
    runtime에 의존성 주입

 

 

 

 

참조 :

https://sungbin.land/di%EB%8A%94-%EC%99%9C-%EC%93%B8%EA%B9%8C-%EB%98%90%ED%95%9C-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%9E%91%EB%8F%99%EB%90%A0%EA%B9%8C-482627090a1e

https://tony-programming.tistory.com/entry/Dependency-%EC%9D%98%EC%A1%B4%EC%84%B1-%EC%9D%B4%EB%9E%80

 

반응형