SuperAPI AI 工具集

lifecycle

编程与开发

查看项目

更新于 10-16 07:25

技能介绍

用途:该技能用于在 NestJS 中按应用生命周期阶段执行代码,包括模块与提供者的初始化、应用启动后处理、模块销毁清理以及应用关停处理。

主要能力:覆盖 onModuleInit、onApplicationBootstrap、onModuleDestroy、beforeApplicationShutdown、onApplicationShutdown 五个钩子。各钩子的调用时机不同:onModuleInit 在模块依赖解析后调用;onApplicationBootstrap 在所有模块初始化完成、开始监听连接前调用;onModuleDestroy 在模块销毁时调用;beforeApplicationShutdown 在关停信号后、onApplicationShutdown 前调用;onApplicationShutdown 在收到终止信号(如 SIGTERM、SIGINT)时调用。钩子方法可声明为异步。

使用方式:在类上 implements 相应接口并实现对应方法,类可以是 @Injectable() 提供者,也可以是 @Module() 模块。典型用途包括建立数据库连接池、初始化 Redis 等缓存连接、设置消息队列连接、加载配置、注册事件监听器与定时任务、启动时预热缓存、执行启动健康检查、关停时关闭连接与释放资源、等待进行中的任务完成后优雅退出、刷新日志与指标。

限制:默认情况下关停钩子未启用,需在 main.ts 中调用 app.enableShutdownHooks() 开启;资料提示启用关停钩子会消耗内存,仅在需要关停生命周期钩子时启用。一个类可同时实现多个生命周期接口。每个钩子的具体返回类型、错误处理策略与在微服务下的差异,资料未完整提供,暂未提供。