본문 바로가기
Nest

[Nest] NestFactory 동작

by chu_dw 2024. 3. 30.

NestFactory 역할

nestjs의 진입점 즉 제일 먼저 동작하는 NestFactory에 대해 정리하겠다.

NestFactory는 main.ts에서 NestFactory.create()로 appModule을 읽어 가장 먼저 실행된다.

애플케이션 인스턴스를 생성하고 구성하는 역할을 한다.

 

.create()의 코드는 아래와 같다 코드를 순서대로 간단하게만 정리해 보겠다.

 

 

NestFactory동작

NestFactory의 create 메서드 코드는 아래와 같다.

 

1. HttpAdapter 인스턴스 생성

HttpAdapter는 NestJs Core에서 정의하고 있는 AbstractHttpAdapter 인터페이스를 구현하는 클래스이다.

AbstractHttpAdapter느 Nestjs가 서버 엔진과의 통신을 추상화하기 위한 인터페이스로 

http 요청을 처리하기 위해 필요한 인터페이스를 정의하고 있다. 이를 사용해 서버를 구성한다.

(이 때 정의 된 메서드들이 express와 동일하다는데 express도 공부해야 할 거 같다)

 

2. applicationConfig 인스턴스 생성

applicationConfig는 NestApplication에서 만들어지는 그로벌 미들웨어를 저장하는 인스턴스이다.

그로벌 미들웨어는 애플리케이션 전체에 적용되는 미들웨어이다.

 

3.NestContainer 인스턴스 생성

NestContainer는 nest에서 필요한 필수 모듈을 저장하고있고 의존성 주입 역할 수행한다.

 

4.initialize() 메서드 호출

initialize()는 위에서 생성된 NestContainter에 모듈을 등록하고,

각 모듈간의 연결관계와 모듈의 의존성과 같은 메타정보를 관리한다.

또한 등록된 모듈의 객체와 인스턴스를 순서대로 생성하는 역할을 한다.

 

5.NestApplication 생성
위에서 생성한 http서버, 컨테이너, 애플리케이션 설정을 생성자로 전달하여 NestApplication객체를 생성한다.

만들어진 NestApplication객체는 어플리케이션 라우팅 및 의존성 주입을 통해 애플리케이션을 관리하고 실행한다.

생성된 NestApplication은 프록시로 래핑하여 반환된다. (에러 핸들링, 메서드 체이닝, 등의 기능을 위해)

 

 

 

 

 

https://velog.io/@koo8624/NestJS-%ED%8C%8C%ED%97%A4%EC%B9%98%EA%B8%B0-01.-NestFactory-NestApplication

 

[NestJS 파헤치기] 01. NestFactory

이번에는 그 첫 시간으로 모든 NestJS 어플리케이션의 진입점에 해당하는 NestFactory 클래스에 대해 살펴보도록 하겠습니다.

velog.io

 

'Nest' 카테고리의 다른 글

[Nest] Nestjs logger와 middleware, intercepter  (0) 2024.04.16
[Nest] Nestjs 멀티 스레드 (Worker)  (0) 2024.04.13
[Nest] passport  (0) 2024.03.04
[Nest] nest guard  (0) 2024.02.29
[Nest] 데코레이터, 메타데이터  (0) 2024.02.26