1. 默认为 default,共享类中变量有并发会导致异常修改问题
  2. 如果修改 service 为REQUEST,引用该 service 的地方也会变成REQUEST,作用域向上传递
  3. 修改类作用域为REQUEST,生命周期失效、定时任务触发失效(可以使用 EventEmitter2 进行解耦生命周期和作用域,有些场景下需要配合 redis 锁做 once 一次处理,不然信号可能发送两次)

作用域用法

DEFAULT 提供程序的单个实例在整个应用中共享。实例生命周期与应用生命周期直接相关。应用启动后,所有单例提供程序都已实例化。默认情况下使用单例作用域。
REQUEST 专门为每个传入的请求创建一个新的提供程序实例。请求完成处理后,该实例将被垃圾回收。
TRANSIENT 临时提供器不在消费者之间共享。每个注入临时提供器的消费者都将收到一个新的专用实例。

Documentation | NestJS - A progressive Node.js framework

注入范围-基础知识 - Nest.js v10.3.10 - 中文开发文档手册