본문 바로가기
  • optimuslee
Nestjs

[Nestjs] 4. 프로바이더

by OptimusLee 2022. 4. 10.
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
반응형