[NestJS 파헤치기] 03. InstanceLoader and Injector
Intro 안녕하세요. 이전 포스팅에서는 NestJS에서 모듈과 의존성 객체의 메타데이터가 어떤 과정을 거쳐 등록되는지 살펴보았습니다. 이번 포스팅에서는 모듈에 등록된 의존성 객체 인스턴스의 라이프사이클(생성, 주입, 제거)을 관리하는 InstanceLoader와 Injector에 대해 알아보도록 하겠습니다. Dependency Injection in NestJS Dependency Injection(이하 의존성 주입)은 인스턴스들의 의존 관계를 선언적으로 표현하고, 의존 관계의 파싱과 인스턴스 생성은 일반적으로 프레임워크에서 관리하는 IoC 컨테이너에 위임하는 프로그래밍 방법론입니다. 의존성 주입과 관련된 자세한 내용은 이번 포스팅의 범위를 벗어나므로 생략하도록 하겠습니다. 의존성 주입을 구현할 때에는 객체들의 의존 관계를 정확히 파싱하고 이를 순서대로 조율해주는 과정이 매우 중요합니다. NestJS에서는 크게 생성자 기반(constructor-based) 방식과 프로퍼티 기반(property-based) 방식이 있습니다. 아래 예시에서 CatController는 CatService에 의존성을 가지고 있습니다. 따라서 CatController의 인스턴스를 생성하려면 먼저 CatService의 인스턴스를 생성해야 하고, 이 인스턴스를 CatController를 생성할 때 주입해주어야 합니다. NestJS에서는 InstanceLoader와 Injector가 이 과정을 실질적으로 주도하고 조율하는 역할을 한다고 볼 수 있습니다. ...