
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는 단순한 진입점 이상이다.서비스 전체의 런타임 환경을 직접 설정하는 허브 역할을 한다.
'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 |