Custom Providers
NestJS 🟡 MidDéfinition
Providers définis avec useClass, useValue, useFactory ou useExisting pour un contrôle 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 implémentations alternatives.
Anti-pattern
Termes liés
En entretien
Quelle différence entre useClass, useValue et useFactory dans un provider NestJS ?
useValue injecte une valeur brute comme une clé API, useClass dit quelle classe concrète instancier, et useFactory construit le provider dynamiquement via une fonction qui peut recevoir des dépendances injectées. C'est comme choisir entre un meuble en kit, un meuble sur mesure ou un ancien meuble recyclé.
Quand est-ce que tu utiliserais un custom provider plutôt qu'un service classique ?
Pour injecter des variables d'environnement, des connexions dynamiques ou des implémentations alternatives, typiquement tout ce qui n'est pas juste une classe standard. L'anti-pattern serait d'accéder directement à process.env dans les services au lieu d'injecter la configuration proprement.
Fiche mise à jour le 2026-09-27