[NestJS] Providers & 의존성 주입 (DI)

이재훈·2023년 5월 27일
0

NestJs

목록 보기
3/8

공급자(Providers)

공급자는 Nest의 개본 개념입니다. 많은 기본 Nest클래스는 서비스, 리포지토리, 팩토리, 헬퍼 등 공급자로 취급될 수 있습니다. 공급자는 종속성으로 주입 할 수 있습니다. 즉, 개체는 서로 다양한 관계를 만들 수 있으며 개체 인스턴스를 "연결"하는 기능은 대부분 Nest 런타임 시스템에 위임할 수 있습니다.

컨트롤러는 HTTP 요청을 처리하고, 복잡한 서비스 로직은 Provider에게 위임해야 합니다.

app.module.ts

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';

@Module({
  imports: [],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

위의 코드에서 providers에 AppService가 providers로 등록되어있는 것을 볼 수 있습니다. 만약 providers에 AppService를 지운다면?

@Controller('cats')
export class AppController {
  constructor(private readonly appService: AppService) {}

  @Get('hello')
  getHello(): string {
    return this.appService.getHello();
  }
}

생성자로 appService를 넣어주고 있지만 Nest는 providers에 AppService가 등록되어 있지 않기 때문에 찾을 수 없게 되고, 에러가 발생하게 됩니다.

스프링의 Bean으로 생각하면 될 것 같습니다. 의존성 주입(DI)입니다.


해당 게시글은 "NestJS 공식 홈페이지"
인프런 강의 "탄탄한 백엔드 NestJS, 기초부터 심화까지(윤상석)"을 참고하여 만들었습니다.

profile
부족함을 인정하고 노력하자

0개의 댓글