📱 Android

[Dagger2] #1 DI 기본개념

콩드로이드 2022. 3. 2. 00:00

안녕하세요 오랜만입니다 ㅎㅎ 
오늘은 자주 사용되는 의존성 주입에 대해 정리해보고자 합니다 :)
함께 DI를 정복해봅시다!📚


✅ DI (Dependency Injection)

 의존성 주입의 개념과 필요성에 대해 알아봅시다

 

🔍 의존성 주입이란 ?

     - 구성요소간 의존관계가 소스코드 내부가 아닌, 외부를 통해 정의

 

예를 들어,

왼쪽은 A 객체에서 직접 B를 생성
오른쪽은 A 객체 외부에서 B를 생성 후 setter() 혹은 constructor를 통해 A에 주입

즉, 오른쪽과 같은 경우가 의존성 주입이 적용된 사례라고 생각하면 됩니다



여기서 객체를 생성하고 넘겨주는 외부 역할을 하는 것을  DI Framework 라 합니다

또한 객체의 생성 제어를 외부 Framework에서 담당하는 것을 IoC라 합니다

* IOC : Inversion of Control(제어의 역전)

 


✅  DI를 사용하는 이유


우선, 만약 왼쪽처럼 직접 B를 A 내부에서 선언한 경우, B의 변경사항이 생기면 A에서 직접 수정을 해줘야합니다. 

만약, B 객체를 직접 선언한 객체가 A뿐만 아니라면 다른 객체들에서도 이 변경사항을 수정해야하는 번거로움이 생깁니다.

하지만 외부에서 생성된 객체가 주입되는 경우라면 일일이 수정해야할 필요가 없습니다


즉, 위와 같은 번거로운 상황들을 줄이기 위해 DI가 사용됩니다

쉽게 정리해 DI는 이러한 장점이 있기 때문에 사용됩니다 

 

✍️  재사용성이 높음
✍️  객체간의 의존도가 낮기에 테스트가 용이
✍️  BoilerPlateCode가 줄어듬



이번 포스팅에선 DI의 개념에 대해 간단히 정리했고, 다음 포스팅은 Dagger2로 돌아오겠습니다

 

 

그리고, DI를 작성하며 많은 도움을 받은 블로그를 첨부합니다 👍🏻

 

 

궁금하신 점이나 의견이 있으시면 댓글 부탁드립니다 감사합니다 😊