应用生命周期
使用应用生命周期
ts
// src/app.service.ts
import {
Injectable,
OnModuleInit,
OnApplicationBootstrap,
OnModuleDestroy,
BeforeApplicationShutdown,
OnApplicationShutdown,
} from '@nestjs/common';
@Injectable()
export class AppService
implements
OnModuleInit,
OnApplicationBootstrap,
OnModuleDestroy,
BeforeApplicationShutdown,
OnApplicationShutdown
{
getHello(): any {
return {
data: {
message: 'Hello World',
},
};
}
onModuleInit() {
console.log('Module initialized');
// 在这里执行模块初始化逻辑
}
onApplicationBootstrap() {
console.log('Application bootstrapped');
// 在这里执行应用启动后的逻辑
}
onModuleDestroy() {
console.log('Module destroyed');
// 在这里执行模块销毁前的清理逻辑
// 触发条件:调用 app.close()、终端 Ctrl+C(SIGINT)、kill -15 <PID>(SIGTERM)、Docker STOP 信号等
}
beforeApplicationShutdown(signal: string) {
console.log(`Received shutdown signal: ${signal}`);
// 在这里执行应用关闭前的逻辑
}
onApplicationShutdown(signal: string) {
console.log(`Application shutting down with signal: ${signal}`);
// 在这里执行最终的清理逻辑
}
}测试
shell
# 开发环境启动
npm run start
# 打印结果:Module initialized
# 打印结果:Application bootstrapped