[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가 이 과정을 실질적으로 주도하고 조율하는 역할을 한다고 볼 수 있습니다. ...

2022년 11월 28일 · 8 분 · Donghyung Ko

[NestJS 파헤치기] 02. @Module and DynamicModule

안녕하세요. 이전 포스팅에서는 NestFactory가 NestApplication을 생성하는 과정을 다루었습니다. 이번 포스팅에서는 NestJS를 구성하는 핵심 요소 중 하나인 Module이 어떻게 애플리케이션에 등록되는지 알아보겠습니다. @Module NestJS에서는 모듈을 선언할 때 @Module 데코레이터를 사용합니다. NestJS 공식 문서에서는 @Module이 Nest가 애플리케이션 구조를 관리하는 데 필요한 메타데이터를 다루는 용도로 사용된다고 설명합니다. (다만, 여기서 말하는 모듈은 NestJS가 내부적으로 사용하는 Module과 구별되는 개념입니다.) A module is a class annotated with a @Module() decorator. The @Module() decorator provides metadata that Nest makes use of to organize the application structure. ...

2022년 11월 18일 · 5 분 · Donghyung Ko

[NestJS 파헤치기] 01. NestFactory

안녕하세요. 최근 여러 가지 일로 바쁜 나날을 보내다 보니 오랜만에 포스팅을 하게 되었습니다. 이번에는 NestJS 파헤치기라는 주제로 글을 작성해보려 합니다. 최근 업무상 NestJS를 새롭게 사용하게 되었는데, 그 과정에서 NestJS 코어와 관련한 지식이 부족하여 기능을 구현하는 데 어려움을 느끼는 일이 잦아졌습니다. 그래서 개인적인 공부를 위해 NestJS 프레임워크를 개괄적으로 살펴보는 시간을 가져보고자 마음먹었습니다. 이번에는 그 첫 시간으로 모든 NestJS 어플리케이션의 진입점에 해당하는 NestFactory 클래스에 대해 살펴보도록 하겠습니다. NestFactory Nestjs 공식문서를 살펴보면, 처음 마주하는 튜토리얼에서 다음과 같은 코드를 찾아볼 수 있습니다. ...

2022년 11월 15일 · 8 분 · Donghyung Ko