소프트웨어 엔지니어링 디자인 패턴 중 하나
특정 클래스가 의존하고 있는 다른 클래스나 컴포넌트를 직접 만들지 않고, 외부에서 주입받아 사용 하는 방식
모듈간의 높은 결합도를 줄이고, 유연성과 재사용성을 높이고자 나온 패턴
// cats.controller.ts
import { Controller, Get, Post, Body } from '@nestjs/common';
import { CatsService } from './cats.service';
import { Cat} from './interface/cat.inerface';
@controller('cats')
export class CatsController {
constructor(private catsService: CatsService) {}
@Post()
async create(@Body() cat: Cat) {
this.catsService.create(cat);
}
@Get()
async findAll(): Promise<Cat[]> {
return this.catsService.findAll();
}
}
CatService 의 인스턴스는 NestJS 프레임워크에서 생성하여 CatController 주입 의존성주입은 단위테스트에 용이 단, module 에 providers 에 명시되지 않는 service 는 의존성주입 이 되지 않음