모든 응용 프로그램 요소에는 생명주기라는 것이 존재합니다.
Nest Application에도 Nest에서 관리하는 생명주기가 있습니다.
Nest에서는 수명 후크를 제공하여 주요 수명 순간에 대한 가시성과 발생 시 어떤 행동을 할 수 있는 기능을 제공합니다.
위 그림은 NestJS의 Lifecycle Sequence를 보여주고 있습니다.
우리가 만든 Application에서 npm run start
를 입력시, 해당 Sequence에 따라 프로그램이 시작됩니다.
코드와 터미널을 통해 예시를 보겠습니다.
// main.ts
//.. import 부분 생략
console.log('bootstrap 함수 시작 전');
async function bootstrap() {
console.log('bootstrap 시작, app 지나기 전');
const app = await NestFactory.create<NestExpressApplication>(AppModule);
console.log('bootstrap 중');
// 생략..
await app.listen(3000);
console.log('bootstrap 끝');
}
bootstrap();
console.log('서버 종료');
npm run start
을 실행 시, application은 세 단계로 구분되어 동작하여 구분됩니다.
각 모듈의 초기화 진행(코드로 생성한 모듈뿐만 아니라, ORM, Redis 등 필요한 모듈의 의존성이 초기화된다.)
여기서의 Bootstrap은 ‘부팅’이라는 의미입니다.