IoC 全称 Inversion of Control 译为控制反转,是面向对象中的一种设计原则,用来降低代码之间的耦合度。
主要有依赖注入和依赖查找两种实现方式,NestJS 中采用的是依赖注入。
NestJS 中 IoC 的理解:
-
NestJS 中有 service 和 controller 两个分层;实现 service 的时候必须通过 @Injectable 来声明。
-
声明之后注册到 @Module 的 providers 属性中,相当于向当前模块声明可用的 service,该声明是必须的,否则代码会报错。
exports 属性用来将 service 暴露给其他模块。
-
在 controller 或 service 的 constructor 中完成注入,注入后就可以使用对应的 service 了。