Nest.js에서 Provider는 의존성 주입(Dependency Injection)의 핵심 개념 중 하나입니다.
간단히 말해, Provider는 특정 기능이나 서비스를 제공하는 객체를 의미합니다.
주로 서비스, 값, 클래스, 혹은 팩토리를 주입하여 애플리케이션의
다른 부분에서 사용할 수 있게 합니다.
Nest.js에서 Provider는 다양한 의존성을 관리하고, 필요할 때 이를 다른 클래스나 모듈에서 사용할 수 있도록 주입하는 역할을 합니다.
예를 들어, 데이터베이스 접근 로직을 담고 있는 서비스나
특정 비즈니스 로직을 처리하는 서비스가 Provider로 정의될 수 있습니다.
Provider는 Nest.js의 의존성 주입(Dependency Injection, DI)
시스템을 통해 애플리케이션 내에서 재사용 가능한 서비스를 제공합니다.
이렇게 하면 애플리케이션의 모듈 간 결합도를 낮추고, 코드의 유지 보수를
더 쉽게 할 수 있습니다.
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를 사용할 모듈에서 등록해야 합니다.
예를 들어, AppModule에서 MyProvider를 등록하는 방법은 다음과 같습니다.
import { Module } from '@nestjs/common';
import { MyProvider } from './my-provider';
@Module({
providers: [MyProvider],
})
export class AppModule {}
이제 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로 등록하고,
모듈에 추가하여 사용할 수 있습니다.