概要
- Custom providers で文字列を指定したサンプルです。
- Moduleのprovidersに
{ provide: 文字列キー, useClass: サービスクラス }
で定義します。
- 定義したサービスはModuleRefを使用してContoller内部で生成します。
docs.nestjs.com
docs.nestjs.com
実行環境
使用ライブラリ
services/hello.service.ts
import { Injectable } from '@nestjs/common';
@Injectable()
export class HelloService {
getHello(): string {
return 'Hello World!';
}
}
app.module.ts
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { HelloService } from './services/hello.service';
@Module({
imports: [],
controllers: [AppController],
providers: [{ provide: 'HELLO_SERVICE', useClass: HelloService }],
})
export class AppModule {}
app.controller.ts
import { Controller, Get } from '@nestjs/common';
import { ModuleRef } from '@nestjs/core';
import { HelloService } from './services/hello.service';
@Controller()
export class AppController {
constructor(private readonly moduleRef: ModuleRef) {}
@Get()
getHello(): string {
const service = this.moduleRef.get('HELLO_SERVICE') as HelloService;
return service.getHello();
}
}
github.com