Domenii de Viață ale Providerilor (Scope DEFAULT, REQUEST, TRANSIENT) în NestJS

core NestJS 10.x / TypeScript 5+ Q&A / Distribuie cod

Controlul duratei de existență a instanțelor de servicii: Singleton global (DEFAULT), o instanță per cerere HTTP (REQUEST) sau instanță nouă per injectare (TRANSIENT).

Sintaxă
@Injectable({ scope: Scope.REQUEST }) / Scope.TRANSIENT

În mod prestabilit, toți providerii din NestJS sunt Singleton (Scope.DEFAULT): o singură instanță partajată pe durata întregului proces al aplicației, optimizând memoria și timpul de răspuns.

Pentru scenarii speciale, NestJS suportă:

  • Scope.REQUEST: Se creează o instanță unică exclusiv pentru cererea HTTP curentă (util pentru multi-tenancy, date specifice utilizatorului sau tracing). Atenție: are impact asupra performanței!
  • Scope.TRANSIENT: Fiecare componentă care injectează providerul va primi o instanță nouă și dedicată.
Exemplu: Serviciu cu scope REQUEST pentru context de utilizator
import { Injectable, Scope, Inject } from '@nestjs/common';
import { REQUEST } from '@nestjs/core';
import { Request } from 'express';

@Injectable({ scope: Scope.REQUEST })
export class UserContextService {
  constructor(@Inject(REQUEST) private readonly request: Request) {}

  getClientIp(): string {
    return this.request.ip || 'unknown';
  }
}

Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Domenii de Viață ale Providerilor (Scope DEFAULT, REQUEST, TRANSIENT)

Ai o nelămurire despre utilizarea comenzii Domenii de Viață ale Providerilor (Scope DEFAULT, REQUEST, TRANSIENT) sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.