DI Container

NestJS DI와 IoC 컨테이너 동작 흐름

Nest는 클래스가 직접 의존성을 만들지 않게 하고 컨테이너가 생성과 주입을 맡는다.

의존성이 들어오는 순서

inversion

Controller

요청을 받고 필요한 Service를 생성자에 선언한다.

Service

비즈니스 로직을 제공자로 등록한다.

Token

컨테이너가 어떤 의존성을 줄지 식별한다.

Container

모듈 메타데이터를 읽어 객체 그래프를 구성한다.

Inject

생성자 파라미터에 준비된 인스턴스를 넣는다.

Test

테스트에서는 provider를 쉽게 mock으로 바꿀 수 있다.

Provider 등록그래프 해석인스턴스 생성생성자 주입
의존성 주입 해석

DI의 장점은 객체 생성을 숨기는 데 그치지 않는다. 의존성을 교체 가능하게 만들어 테스트와 확장을 쉽게 한다.