#4_포로바이더(provider)

유상우·2023년 4월 8일
0

Nest.js

목록 보기
5/6

컨트롤러는 요청과 응답을 가공하고 처리하는 역할을 맡는다고 했습니다.
하지만 서버가 제공하는 핵심 기능은 전달 받은 데이터를 어떻게 비지니스 로직으로 해결하는가입니다. 음식 배달 앱에서 메뉴 목록을 조회를 요청한다고 했을 때, 사용자 주변에 위치한 가게를 DB에서 검색하는 작업을 수행해야 하거나 또 사용자가 좋아할 만한 메뉴가 학습되어 있다면 이를 기반으로 추천 메뉴 구성을 바꿀 수도 있습니다. 앱이 제공하고자 하는 핵심 기능, 즉 비지니스 로직을 수행하는 역할을 하는 것이 프로바이더 입니다.

컨트롤러가 이 역할을 수행할 수도 있겠지만 소프트웨어 구조상 분리해두는 것이 단일 책임 원칙(single responsibility principle, SPR)에 더 부합하겠죠?

프로바이더는 service, repository, factory, helper 등 여러가지 형태로 구현 가능합니다.

nest에서 제공하는 프로바이더의 핵심은 의존성을 주입할 수 있다는 점입니다. 의존성을 주입하기 위한 라이브러리가 많이 있지만 nest가 이를 제공해주기 때문에 손쉽게 사용할 수 있습니다.

DI(dependency injection)은 OOP에서 많이 활용하는 기법입니다. 의존성 주입을 이용하면 객체를 생성하고, 사용할 때 관심사를 분리할 수 있습니다.

@Injectable 데코레이터를 주목하시면 UsersService 클래스에 이 데커레이터를 선언함으로써 다른 어떤 nest 컴포넌트에서도 주입할 수 있는 provider가 됩니다.

profile
Potentialist

0개의 댓글