Lifecycle Hooks
NestJS 🟡 MidDéfinition
Interfaces (OnModuleInit, OnModuleDestroy, OnApplicationBootstrap, OnApplicationShutdown) qui permettent d'exécuter du code a des moments clés du cycle de vie.
Analogie
Comme les étapes d'ouverture et fermeture d'un magasin : mise en place le matin, rangement le soir.
Exemple de code
@Injectable()
export class DbService implements OnModuleInit, OnModuleDestroy {
async onModuleInit() {
await this.connect();
}
async onModuleDestroy() {
await this.disconnect();
}
}
Cas d'usage
Initialiser des connexions base de données au démarrage et les fermer proprement a l'arrêt.
Anti-pattern
Termes liés
En entretien
Quels sont les Lifecycle Hooks disponibles dans NestJS et à quoi servent-ils ?
On a OnModuleInit, OnModuleDestroy, OnApplicationBootstrap et OnApplicationShutdown, qui permettent d'exécuter du code à des moments clés du cycle de vie, un peu comme les étapes d'ouverture et de fermeture d'un magasin. On les utilise typiquement pour initialiser une connexion base de données au démarrage et la fermer proprement à l'arrêt.
Pourquoi ne pas juste initialiser une connexion dans le constructeur du service ?
Parce que c'est l'anti-pattern à éviter : initialiser des ressources dans le constructeur bloque la résolution de la DI. Il faut utiliser onModuleInit à la place, qui s'exécute une fois que toutes les dépendances sont résolues.
Fiche mise à jour le 2026-09-27