类注册
使用类将提供者注册到服务容器是最常用的方式。
基本使用
下面是常用的使用类将提供者注册到容器的方式
@Module({
providers: [AuthService],
})
以上是简写形式,完整写法应该如下
@Module({
providers: [{
provide: AuthService,
useClass: AuthService,
}],
})
对应如下controller
import { Controller, Get } from '@nestjs/common';
import { AppService } from './app.service';
@Controller()
export class AppController {
constructor( private readonly appService: AppService ) {}
@Get()
getHello(): string {
return this.appService.getHello();
}
}
此时provide:AuthService 中的AuthService为key,用这个key去服务容器中寻找与key相匹配的服务。
既然key,当改变key 为 string时
@Module({
providers: [{
provide: "car",
useClass: AuthService,
}],
})
此时 controller应该如下
import { Controller, Get, Inject } from '@nestjs/common';
import { AppService } from './app.service';
@Controller()
export class AppController {
constructor(
@Inject('car')
private readonly appService: AppService,
) {}
@Get()
getHello(): string {
return this.appService.getHello();
}
}
字符串形式的key的provide需要单独注入,变量形式的key充当两重角色一个式字符串形式的key,另一个是充当类型使用,提供更好的语法支持