Nâng CaoNestJS iconNestJS

Hierarchical Dependency Injection trong NestJS — module hierarchy và provider lookup?

NestJS DI container theo hierarchy: Global providers (APP_GUARD, APP_PIPE...) → Module providers → Controller providers. Khi inject một dependency, NestJS tìm trong:
1. Module hiện tại
2. Imported modules (providers được export)
3. Global modules

Global providers khai báo qua @Global() module hoặc useGlobal*() — available khắp nơi không cần import.

Module-scoped providers chỉ visible trong module đó và các module import nó. Phải export provider mới có thể dùng ngoài module.

Shared Module pattern: tạo SharedModule export các providers dùng chung (PrismaService, ConfigService), import vào các feature modules cần dùng. Tốt hơn @Global() vì dependency explicit.

Pitfall: circular module imports (ModuleA imports ModuleB và ngược lại) — giải quyết bằng forwardRef(() => ModuleB) trong imports array.

Xem toàn bộ NestJS cùng filter theo level & chủ đề con.

Mở danh sách NestJS