Controller
요청을 받고 필요한 Service를 생성자에 선언한다.
Nest는 클래스가 직접 의존성을 만들지 않게 하고 컨테이너가 생성과 주입을 맡는다.
요청을 받고 필요한 Service를 생성자에 선언한다.
비즈니스 로직을 제공자로 등록한다.
컨테이너가 어떤 의존성을 줄지 식별한다.
모듈 메타데이터를 읽어 객체 그래프를 구성한다.
생성자 파라미터에 준비된 인스턴스를 넣는다.
테스트에서는 provider를 쉽게 mock으로 바꿀 수 있다.
DI의 장점은 객체 생성을 숨기는 데 그치지 않는다. 의존성을 교체 가능하게 만들어 테스트와 확장을 쉽게 한다.