控制器中使用提供者的区别

来源:6-4 葵花宝典:什么是依赖注入(DI)&控制反转IoC

慕粉3946981

2024-06-06

为什么在控制器中使用提供者,如果是在构造函数参数上可以省略 inject 装饰器及相应的 token 值,而在类的实例上必须写 inject 装饰器及对应的 token ?
不要讲概念理论,直接上nestjs关于此逻辑的核心代码并描述核心逻辑

写回答

1回答

Brian

2024-06-07

这是固定用法。

注册方式不同,使用方式不同。

Class类的注册方式,是直接在modules中的providers中注册的,

https://img1.sycdn.imooc.com/szimg/66626f0f092bb80d28440576.jpg

官方示例代码:https://github.com/nestjs/nest/blob/master/sample/01-cats-app/src/cats/cats.module.ts#L7

官方示例仓库:https://github.com/nestjs/nest/tree/master/sample


而useClass这类的注册方式,有指定provide的名称,则就需要在Inject的时候加入这个名称了。

https://img1.sycdn.imooc.com/szimg/66626ef6097a6c6128302230.jpg

参考:https://docs.nestjs.com/fundamentals/custom-providers#non-class-based-provider-tokens

对于源码,可以自行在github上搜索

0
0

NestJS 入门到实战 前端必学服务端新趋势

近几年快速发展的Node.js框架,掌握未来前端工程师后端开发能力

569 学习 · 238 问题

查看课程