Dependency Injection
먼저 Dependency(의존 관계)란 무엇이고 어떤 문제가 있을까?
클래스 A가 다른 클래스 (혹은 인터페이스) B를 사용할 때 A는 B에 의존한다고 이야기 한다. 즉, 한 객체의 코드에서 다른 객체를 생성하거나 다른 객체의 메서드를 호출할 때, 그리고 파라미터로 객체를 전달받아 사용할 때 의존성이 발생한다고 할 수 있다.
A가 B에 의존중 일때, B의 변경은 A에게 영향을 끼친다. 즉, B의 변경이 A의 변경을 초래할 가능성이 존재한다.
Dependency Injection(의존성 주입)이란 무엇일까?
의존성 주입(DI, Dependency Injection)이란, 필요한 객체를 직접 생성하거나 찾지 않고, 외부에서 넣어주는 방식이다. 즉, 객체의 의존관계를 내부에서 결정하는 것이 아니라 객체 외부에서, 런타임 시점에 결정하는 방식이다.
이와 같은 방식에서 PC는 한번 생산되면 CPU를 교체할 수 없다. 또한, CPU의 스펙이 변경되면 컴퓨터도 그에 맞춰 설계를 변경해야한다.
따라서 적절한 방법이 아니다.
이와 같은 방식은 생성자를 통해 의존 객체를 전달 받아 의존관계를 외부에서 결정하는 것이기 때문에, 객체의 의존관계를 내부에서 결정하는 것이 아니라 객체 외부에서, 런타임 시점에 결정하는 방식이다.
Dependency Injection(의존성 주입) 사용 이유
모듈간 의존성이 줄어든다.
재사용성이 높아진다.
유닛 테스트를 쉽게 만들어준다.
가독성이 증가한다.


