ライフサイクルイベントとは
で起動時や終了時の初期化や終了処理などのことをライフサイクルという。
それらのタイミングで任意の処理をライフサイクルイベントという。
コントローラーや、モジュール、サービスなど基本的にどこでも使うことができます。
onModuleInit()
実行トリガー
モジュールが初期化されたときに呼び出されます。
用途
サービス内で必要な初期設定や依存関係の初期化などを行う。
実装例
import { Injectable, OnModuleInit } from '@nestjs/common';
@Injectable()
export class MyService implements OnModuleInit {
onModuleInit() {
console.log('MyServiceが初期化されました');
}
}
onApplicationBootstrap()
実行トリガー
アプリケーション全体がブートストラップされたときに呼び出される。
用途
アプリケーションが完全に初期化された後に実行したい処理を定義する。
実装例
import { OnApplicationBootstrap } from '@nestjs/common';
@Injectable()
export class MyService implements OnApplicationBootstrap {
onApplicationBootstrap() {
console.log('アプリケーションがブートストラップされました');
}
}
onModuleDestroy()
実行トリガー
モジュールが破棄されるときに呼び出される。
アプリケーションがシャットダウンされるときに、各モジュールのonModuleDestroyが順次呼び出される。
用途
モジュールのクリーンアップ処理を行うために使用する。
実装例
import { OnModuleDestroy } from '@nestjs/common';
@Injectable()
export class MyService implements OnModuleDestroy {
onModuleDestroy() {
console.log('モジュールが破棄されます');
}
}
beforeApplicationShutdown()
実行トリガー
アプリケーションがシャットダウンされる直前に呼び出される。
用途
シャットダウン前の最後の処理を実行するために使用する。
実装例
import { BeforeApplicationShutdown } from '@nestjs/common';
@Injectable()
export class MyService implements BeforeApplicationShutdown {
beforeApplicationShutdown(signal?: string) {
console.log(`アプリケーションがシャットダウンされます: ${signal}`);
}
}
onApplicationShutdown()
実行トリガー
アプリケーションがシャットダウンされた後に呼び出される。
用途
シャットダウン後の処理を実行するために使用する。
実装例
import { OnApplicationShutdown } from '@nestjs/common';
@Injectable()
export class MyService implements OnApplicationShutdown {
onApplicationShutdown(signal?: string) {
console.log(`アプリケーションがシャットダウンされました: ${signal}`);
}
}
参考
Lifecycle Events
NestJSのリクエストライフサイクルを理解する
fundamentals-lifecycleevents