1. 강의 목표
이 강의에서는 IoC와 DI의 기본 개념을 이해하고, Express와 NestJS를 비교하여 이 개념들이 실제로 어떻게 구현되는지를 배웁니다.
2. IoC (Inversion of Control) 개요
개념
- **Inversion of Control (IoC)**는 객체의 생성과 관리 책임을 개발자가 아닌 프레임워크 또는 컨테이너가 맡는 설계 패턴입니다. 즉, 애플리케이션의 제어 흐름을 프레임워크가 관리하게 되며, 이는 개발자가 직접 제어하는 대신 프레임워크가 애플리케이션의 구성 요소를 관리하고 연결합니다.
목적
- 결합도 감소: 애플리케이션의 구성 요소 간의 결합도를 낮추어 유지보수성을 높입니다.
- 유연성 향상: 애플리케이션의 확장성과 유연성을 향상시킵니다.
- 테스트 용이성: 의존성 주입을 통해 테스트하기 쉬운 구조를 제공합니다.
3. DI (Dependency Injection) 개요
개념
- *Dependency Injection (DI)**는 IoC의 구현 방법 중 하나로, 객체의 의존성을 외부에서 주입하여 객체 간의 결합도를 낮추는 설계 패턴입니다. DI는 객체의 생성과 관리가 아닌 의존성의 주입을 통해 객체를 구성합니다.
유형
- 생성자 주입: 객체를 생성할 때 의존성을 주입합니다.
- 세터 주입: 객체의 세터 메서드를 통해 의존성을 주입합니다.
- 인터페이스 주입: 의존성을 구현체의 메서드를 통해 주입합니다.
4. Express와 NestJS에서의 IoC 및 DI
Express
IoC 및 DI의 사용
- Express는 기본적으로 IoC와 DI를 제공하지 않습니다. 개발자가 직접 객체를 생성하고 관리해야 하며, 의존성 관리도 개발자가 직접 수행합니다.