728x90
반응형
3장에서 우리는 컨트롤러에 대해 배웠습니다. 컨트롤러는 요청과 응답을 가공하고 처리하는 역할 맡는다고 배웠습니다. 프로바이더는 어플리케이션이 제공하고자는 기능을 수행하는 역할을 합니다. 프로바이더의 주요 개념은 의존성을 지입할 수 있다는 것입니다. 각각의 개체들이 서로 관계를 만들어 기능을 할 수 있도록 해줍니다. 프로바이더는 @Injectable() 데코레이터로 주석이 달린 클래스입니다.
📢프로바이더는 서비스, 레포지토리, 팩토리, 헬퍼 등 여러가지 형태로 구현이 가능합니다.
위에서 언급했다시피 Nestjs에서 제공하는 프로바이더의 핵심은 의존성을 주입할 수 있다는 점입니다. 이를 위해선 라이브러리를 사용할 수도 있지만 Nestjs에서 기본적으로 제공하기 때문에 손쉽게 사용할 수 있습니다.
💡 의존성 주입(Dependency Injection)은 OOP에서 주로 활용하는 기법입니다. 코드의 재활성을 높여주며 객체 간의 종속성을 줄이거나 없앨 수 있습니다.
컨트롤러는 비즈니스 로직을 직접 수행하지 않습니다. 예를 들어, CatsService는 CatsController의 생성자에서 주입받아, catsService라는 객체 멤버 변수에 할당되어 사용됩니다.
CatsController
@Controller("cats")
export class CatsController{
constructor(private readonly catsService: CatsService){
}
@Post(":id")
create(@Param("id") id: string){
return this.catsService.create(id)
}
}
CatsService
import {Injectable} from "@nestjs/common";
@Injectable()
export class CatsService{
create(id: number){
return `this action create a {id} cats`
}
}
@Injectable() 데코레이터를 사용함으로써 CatsService 클래스에서 다른 Nest 컴포넌트에서도 주입할 수 있는 프로바이더가 됩니다.
728x90
반응형
'Nestjs' 카테고리의 다른 글
[Nestjs] 4-2. DI(Dependency Injection)?? 의존성 주입?? (0) | 2022.04.21 |
---|---|
[Nestjs] 4-1. 프로바이더와 서비스 (0) | 2022.04.10 |
[Nestjs] 3-4. payload 다뤄보기 (0) | 2022.04.03 |
[Nestjs] 3-3. 라우터 파라미터 (0) | 2022.04.02 |
[Nestjs] 3-2. CRUD 시스템 (0) | 2022.04.02 |