跳至主要內容

作用域

Cap原创大约 2 分钟

作用域

Provider 作用域

默认使用单例作用域

类型说明
DEFAULT该提供者的单一实例在整个应用程序中共享。实例的生命周期直接与应用程序的生命周期相关联。一旦应用程序启动,所有单例提供者都已被实例化。默认情况下使用单例作用域。
REQUEST为每个传入请求创建一个该提供者的新实例。实例会在请求完成处理后进行垃圾回收
TRANSIENT瞬态提供者在不同的消费者之间不共享。每个注入瞬态提供者的消费者都会收到一个新的、专用的实例。
@Injectable({ scope: Scope.REQUEST })

Controller 作用域

控制器也可以具有作用域,该作用域适用于在该控制器中声明的所有请求方法处理程序。与提供者作用域类似,控制器的作用域声明了其生命周期。对于基于请求的控制器,为每个传入请求创建一个新实例,并在请求处理完成后进行垃圾回收。


@Controller({
  path: 'cats',
  scope: Scope.REQUEST,
})
export class CatsController {}

作用域层级

  • REQUEST作用域会向注入链上传播,A依赖B,B依赖C,假设B是REQUEST作用域,那么A也会成为REQUEST作用域,但是C不受影响

  • TRANSIENT作用域不会影响依赖链上

持久性提供者

TODO