Main.ts란
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
// 전역 파이프 설정
app.useGlobalPipes(new ValidationPipe());
// 전역 필터 설정
app.useGlobalFilters(new HttpExceptionFilter());
// 전역 인터셉터 설정
app.useGlobalInterceptors(new LoggingInterceptor());
await app.listen(3000);
}
bootstrap();
main.ts는 Nest 애플리케이션 인스턴스를 생성하는 애플리케이션의 엔트리 파일을 말합니다.
main.ts를 이해하려면 NestFactory 클래스를 먼저 이해해야합니다.
NestFactory 클래스란
NestFactory는 NestJS 애플리케이션을 생성하고 설정하는 데 필수적인 클래스입니다.
NestFactory를 통해 애플리케이션 인스턴스를 생성하고, 전역 설정을 적용하며, 서버를 시작하는 등 많은 역할을 합니다.
이처럼 NestFactory 클래스는 main.ts 설정의 중심적인 역할을 합니다.
참고로 main.ts의 bootstrap은 부팅을 의미하는 단어입니다.
NestFactory가 애플리케이션을 "bootstrap"한다는 것은 애플리케이션을 초기화하고 실행 준비를 갖추게 한다는 의미입니다.
NestFactory는 애플리케이션의 설정을 완료하고, 필요한 모든 모듈과 종속성을 로드하며, 서버를 시작하여 요청을 처리할 수 있는 상태로 만듭니다.
createApplicationContext(moduleCls: any, options?: NestApplicationContextOptions): Promise<INestApplicationContext>;
private createNestInstance;
private initialize;
private handleInitializationError;
private createProxy;
private createExceptionProxy;
private createExceptionZone;
private registerLoggerConfiguration;
private createHttpAdapter;
private isHttpServer;
private setAbortOnError;
private createAdapterProxy;
private createGraphInspector;
- createNestInstance: NestJS 애플리케이션을 인스턴스화하는 메서드입니다.
- initialize: 애플리케이션을 초기화하는 메서드입니다.
- handleInitializationError: 초기화 과정에서 발생한 오류를 처리하는 메서드입니다.
- createProxy: 프록시를 생성하는 메서드로, 내부 구현에서 사용됩니다.
- createExceptionProxy: 예외 프록시를 생성하는 메서드입니다.
- createExceptionZone: 예외 처리를 위한 영역을 생성하는 메서드입니다.
- registerLoggerConfiguration: 로거 설정을 등록하는 메서드입니다.
- createHttpAdapter: HTTP 어댑터를 생성하는 메서드입니다.
- isHttpServer: HTTP 서버인지 여부를 확인하는 메서드입니다.
- setAbortOnError: 오류 발생 시 애플리케이션 중지 여부를 설정하는 메서드입니다.
- createAdapterProxy: 어댑터 프록시를 생성하는 메서드입니다.
- createGraphInspector: 그래프 인스펙터를 생성하는 메서드입니다.
이 메서드들은 NestJS 애플리케이션을 생성하고 초기화하는데 필요한 다양한 작업을 수행합니다.
따라서 createApplicationContext 메서드가 호출되면 이러한 작업들이 차례대로 수행되어 NestJS 애플리케이션 컨텍스트가 생성되고 초기화됩니다.
요약
NestFactory 클래스가 애플리케이션을 bootstrap한다는 것은 애플리케이션이 실행될 준비를 갖추기 위해 필요한 모든 초기 설정과 구성을 완료하고 서버를 시작하는 과정을 의미합니다.
이는 애플리케이션의 모듈과 종속성을 로드하고, 전역 설정을 적용하며, 서버를 시작하여 클라이언트 요청을 처리할 준비를 마치는 것을 포함하게 됩니다.
때문에 main.ts 설정을 이해하려면 NestFactory 클래스를 먼저 이해가 필요하게 됩니다.
'JaveScript > NestJS' 카테고리의 다른 글
Middleware (0) | 2024.06.11 |
---|---|
@Module() (0) | 2024.06.10 |
Provider (0) | 2024.06.09 |
@Body() 데코레이터 (1) | 2024.06.08 |
자동으로 JSON으로 직렬화되는 이유 (0) | 2024.06.06 |