Custom Providers

NestJS 🟡 Mid

Definition

Providers definis avec useClass, useValue, useFactory ou useExisting pour un controle total sur ce qui est injecte. Permet l'injection de valeurs non-classes.

Analogie

Comme choisir entre acheter un meuble en kit, le faire sur mesure ou recycler un ancien meuble.

Exemple de code

providers: [
  { provide: 'API_KEY', useValue: process.env.API_KEY },
  { provide: Logger, useClass: ProdLogger },
  { provide: 'DB', useFactory: (cfg: ConfigService) =>
    createConnection(cfg.get('DB_URL')),
    inject: [ConfigService],
  },
]

Cas d'usage

Injecter des variables d'environnement, des connexions dynamiques ou des implementations alternatives.

Anti-pattern

Acceder directement a process.env dans les services au lieu d'injecter la configuration.
#core#interview