Injection Scopes

NestJS 🔴 Senior

Definition

Definit le cycle de vie d'un provider : DEFAULT (singleton), REQUEST (par requete) ou TRANSIENT (nouvelle instance a chaque injection).

Analogie

Comme un bureau : partage (singleton), un par client (request) ou jetable apres chaque usage (transient).

Exemple de code

@Injectable({ scope: Scope.REQUEST })
export class RequestLogger {
  private requestId = randomUUID();
  log(msg: string) {
    console.log(`[${this.requestId}] ${msg}`);
  }
}

Cas d'usage

Utiliser REQUEST scope pour des services qui doivent stocker des donnees specifiques a chaque requete.

Anti-pattern

Utiliser REQUEST scope partout, ce qui desactive le singleton et degrade les performances.
#core#interview