Nestjs 라이프 사이클

바그다드·2024년 1월 18일
0

nestjs에서는 어플리케이션의 모든 요소에서 관리할 수 있는 라이프사이클이 있는데,
nest에서는 이런 주요 라이프사이클에 대한 훅(hook)을 제공한다.

  1. onModuleInit
    • 모듈의 종속성이 해결되고 난 후 호출
  2. onApplicationBootstrap()
    • 모듈이 초기화되고 연결을 수신하기 전에 호출
  3. onModuleDestroy()
    • 앱 종료 신호가 수신된 후 호출
  4. beforeApplicationShutdown()
    • 모든 onModuleDestroy() 핸들러가 완료된 이후 호출
      모든 작업이 완료된 후 남아있는 모든 커넥션을 닫음(app.close()를 호출함으로)
  5. onApplicationShutdown()
    • app.close()가 실행돼 커넥션이 닫힌 이후에 호출
  • request스코프를 가진 인스턴스는 위의 라이프사이클이 트리거되지 않는데, 이는 request스코프 인스턴스의 생명주기를 예측할 수 없기 때문이다.
    request스코프 인스턴스는 요청에 따라 개별적으로 생성되고, 요청에 대한 응답을 보낸 수 가비지가 된다.
  • Shutdown Hook관련 주의사항
    해당 훅은 시스템 리소스를 소비하기 때문에 기본적으로는 비활성화되어 있다.
    따라서 훅을 사용하려면 아래처럼 해당 훅을 활성화해야 한다.
async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  // Starts listening for shutdown hooks
  app.enableShutdownHooks();
  await app.listen(3000);
}
profile
꾸준히 하자!

0개의 댓글