[Nest.js] Provider로 의존성 주입 쉽게 이해하기

궁금하면 500원·2024년 8월 8일
0

Provider 생성과 활용

Nest.js에서 Provider는 의존성 주입(Dependency Injection)의 핵심 개념 중 하나입니다.

간단히 말해, Provider는 특정 기능이나 서비스를 제공하는 객체를 의미합니다.

주로 서비스, 값, 클래스, 혹은 팩토리를 주입하여 애플리케이션의
다른 부분에서 사용할 수 있게 합니다.

Nest.js에서 Provider는 다양한 의존성을 관리하고, 필요할 때 이를 다른 클래스나 모듈에서 사용할 수 있도록 주입하는 역할을 합니다.

예를 들어, 데이터베이스 접근 로직을 담고 있는 서비스나
특정 비즈니스 로직을 처리하는 서비스가 Provider로 정의될 수 있습니다.

Provider의 역할

Provider는 Nest.js의 의존성 주입(Dependency Injection, DI)
시스템을 통해 애플리케이션 내에서 재사용 가능한 서비스를 제공합니다.

이렇게 하면 애플리케이션의 모듈 간 결합도를 낮추고, 코드의 유지 보수를
더 쉽게 할 수 있습니다.

Provider 생성 예시

Nest.js CLI 명령어 nest g provider를 사용하면 자동으로 Provider를 생성할 수 있습니다.

nest g provider my-provider

이 명령어는 MyProvider라는 이름의 Provider 파일을 생성합니다.
생성된 파일은 다음과 같은 기본 구조를 가집니다.

import { Injectable } from '@nestjs/common';

@Injectable()
export class MyProvider {
  // 서비스 로직 작성
  doSomething() {
    return 'This is a provider method!';
  }
}

@Injectable() 데코레이터는 이 클래스가 의존성 주입을 통해 다른 클래스에서 사용될 수 있음을 나타냅니다.

Provider를 사용하는 방법

1.모듈에 Provider 등록

Provider를 사용할 모듈에서 등록해야 합니다.
예를 들어, AppModule에서 MyProvider를 등록하는 방법은 다음과 같습니다.

import { Module } from '@nestjs/common';
import { MyProvider } from './my-provider';

@Module({
  providers: [MyProvider],
})
export class AppModule {}

2.다른 클래스에서 Provider 사용

이제 MyProvider를 다른 서비스나 컨트롤러에서 주입할 수 있습니다.

import { Controller, Get } from '@nestjs/common';
import { MyProvider } from './my-provider';

@Controller('example')
export class ExampleController {
  constructor(private readonly myProvider: MyProvider) {}

  @Get()
  getExample() {
    return this.myProvider.doSomething();
  }
}

이렇게 하면 ExampleController에서 MyProvider의 doSomething()
메서드를 사용할 수 있습니다.

결론

Provider는 Nest.js에서 특정 기능을 제공하는 객체입니다.

의존성 주입을 통해 애플리케이션 전반에서 사용할 수 있는 서비스를 정의합니다.

@Injectable() 데코레이터를 사용하여 Provider로 등록하고,
모듈에 추가하여 사용할 수 있습니다.

profile
꾸준히, 의미있는 사이드 프로젝트 경험과 문제해결 과정을 기록하기 위한 공간입니다.

0개의 댓글