의존성주입(DI, Dependency Injection)이란 메인 모듈(main mudule)이 ‘직접’ 다른 하위모듈에 대한 의존성을 주기보다는 중간에 의존성 주입자(dependency injector)가 이 부분을 가로채 메인 모듈이 ‘간접’적으로 의존성을 주입하는 방식입니다.
이를 통해 메인 모듈과 하위모듈간의 의존성을 조금 더 느슨하게 만들 수 있으며 모듈을 쉽게 교체 가능한 구조로 만듭니다.
A가 B에 의존한다. = B가 변하면 A에 영향을 미치는 관계 = A - > B
를 의미하며 코드로는 이러한 것을 A가 B에 의존한다고 합니다.
import java.util.*;
class B {
public void go() {
System.out.println("B의 go()함수");
}
}
class A {
public void go() {
new B().go();
}
}
public class main{
public static void main(String args[]) {
new A().go();
}
}
의존성 주입을 할 때는 의존관계역전원칙(DIP, Dependency Inversion Principle)이 적용됩니다. 이는 2가지의 규칙을 지키는 상태를 말합니다.
외부에서 모듈을 생성하여 dev.add(new BackendDeveloper()) 이런식으로 집어넣는 구조가 되기 때문에 모듈들을 쉽게 교체할 수 있는 구조가 됩니다.
단위 테스팅과 마이그레이션이 쉬워집니다.
애플리케이션 의존성 방향이 좀 더 일관되어 코드를 추론하기가 쉬워집니다. 마이그레이션 : 다른 운영환경으로 이동하는 것(DB이동, 데이터 이동 등)
좋은 정보 감사합니다