의존성 주입(DI)
class A {
new b = new B()
}
class B {
}
- 의존성: 하나의 코드가 다른 코드에 의존
- 주입: 의존성이 있는 코드, 객체를 넣어주다.
- ex. 위의 코드의 경우 A클래스는 B클래스에 의존하고 있다고 표현:
A클래스가 B클래스 직접 생성해서 사용하는 것이 아닌, 외부에서 B클래스의 인스턴스를 생성해서 주입해준다.
제어의 역전(IoC)
- Inversion of Control
- A클래스가 B클래스를 직접 참조하고 생성했던 것을 중간 매개체를 통해서 진행한다.
- 개발자가 직접 의존성을 제어하던 권한을 매개체에게 일임함: 그 매개체를 IoC Container라 칭한다.
IoC Container
주로 NestJS, Spring 등과 같은 프레임워크가 담당하게 된다.
1. 개발자에게서 일임받은 제어권을 사용하여 의존성 관리
2. 인스턴스 생성하여 주입
3. 추후 메모리 해제 역할까지 진행
장점
- Reduced Dependencies
- More Reusable Code
- More Testable Code
- More Readable Code
※ 직접 코드단에서의 추가적인 이해가 필요할 듯
참고자료