[Nest.js] 애플리케이션 진입점

2025. 5. 22. 12:22·Nest.js
728x90
반응형

Nest.js의 main.ts와 Spring의 진입점 구조 비교

Nest.js에서의 애플리케이션 진입점은 main.ts 파일이다.

Spring Boot에서 진입점은 @SpringBootApplication이 붙은 클래스이며, 내부적으로는 main() 메서드에서 실행된다.

두 프레임워크 모두 main() 함수 기반의 진입 구조를 제공하지만,

설정의 위치와 방식은 매우 다르다.


직접 느낀 차이점: 설정이 "간단하다"

Spring으로 프로젝트를 구성할 때는, 필터, 인터셉터, 유효성 검사, CORS, 글로벌 예외처리 등

기능마다 알맞은 설정 파일을 찾아 분산된 구조에 등록해야 했다.

이 과정에서 @Configuration, @Bean, WebMvcConfigurer, FilterRegistrationBean 등

다양한 어노테이션과 인터페이스를 활용해야 했다.

Nest.js에서는 이러한 설정을 대부분 main.ts에서 일괄적으로 처리할 수 있다.

설정이 한곳에 집중되어 있어 코드의 가시성과 유지보수 측면에서 훨씬 간편하게 느껴졌다.


Nest.js의 main.ts 예시

async function bootstrap() {
  const app = await NestFactory.create(AppModule);

  app.setGlobalPrefix('api');
  app.enableCors();
  app.useGlobalPipes(new ValidationPipe({ whitelist: true }));
  app.useGlobalFilters(new HttpExceptionFilter());
  app.enableShutdownHooks();

  await app.listen(3000);
}
bootstrap();
  • Spring에서는 각각 별도 파일에서 구성하던 설정들을 하나의 main.ts에 모을 수 있다.

  • 진입점이 단순히 애플리케이션을 "실행"하는 역할을 넘어서,


    핵심 비교

    항목 Nest.js (main.ts) Spring Boot (main())
    설정 위치 모든 설정을 한 곳에서 관리 설정이 여러 클래스에 분산
    개발 흐름 명시적, 코드 중심 구성 선언적, 구성 중심 구성
    유효성 검사 useGlobalPipes 직접 등록 @Valid + @ControllerAdvice 등 분리
    예외 필터 직접 필터 등록 (useGlobalFilters) 예외 핸들러 별도 구성 (@ExceptionHandler)
    구조적 이점 집중적 설정, 높은 가시성 구조화된 분리, 유연한 설정 변경

    ✅ 정리Spring에서 여러 파일로 나뉘어 있던 설정들을 하나의 진입점에서 직접 제어할 수 있게 하여,Spring의 유연한 구성도 장점이지만, Nest.js의 구조는 작은 규모부터 시작하는 프로젝트에 특히 적합하다.

  • 설정 요소를 빠르게 확인하고, 직접 제어할 수 있는 구조 덕분에 유지보수성과 확장성 모두에서 효율적이라는 인상을 받았다.

  • 설정의 집중화와 명시성이라는 큰 장점을 제공한다.

  • Nest.js의 main.ts는 단순한 진입점 이상이다.

  • 서비스 전체의 런타임 환경을 직접 설정하는 허브 역할을 한다.

728x90
반응형

'Nest.js' 카테고리의 다른 글

[Nest.js] 테스트 코드 작성  (0) 2025.05.22
Nest.js에서의 직렬화와 역직렬화  (0) 2025.05.22
[Nest.js] 프로젝트 구조 설계  (0) 2025.05.22
Spring과의 구조적 유사성과 차이점 정리  (2) 2025.05.22
[Nest.js 시작기] Spring 백엔드 개발자의 Node.js 첫걸음 - 제로베이스에서 DDD까지  (0) 2025.05.22
'Nest.js' 카테고리의 다른 글
  • [Nest.js] 테스트 코드 작성
  • Nest.js에서의 직렬화와 역직렬화
  • [Nest.js] 프로젝트 구조 설계
  • Spring과의 구조적 유사성과 차이점 정리
highgarden
highgarden
커밋 하나하나가 쌓여 커다란 정원이 되는 중입니다. 하루하루 정성껏 심어가는 중 https://github.com/highgarden7
  • highgarden
    커밋심는 정원
    highgarden
  • 전체
    오늘
    어제
    • 분류 전체보기 (37)
      • ai (1)
      • devops (2)
      • Nest.js (14)
      • linux (14)
      • 네트워크 (6)
      • git (0)
      • aws (0)
      • docker (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    IP
    Java
    네트워크
    E2E
    Linux
    githib action
    nestjs
    Chat GPT
    springboot
    vercel
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
highgarden
[Nest.js] 애플리케이션 진입점
상단으로

티스토리툴바