공급자란?
nestjs 공급자란 애플리케이션에서 사용되는 객체를 생성하고 제공하는 역할을 합니다. 대부분의 공급자는 클래스로 작성되며 @Injectable() 데코레이터를 사용하여 해당 클래스를 공급자로 등록합니다.
공급자는 모듈내에서 생성되고 제공됩니다
@Module() 데코레이터의 providers 배열에 공급자를 등록하여 모듈 내에서 사용할 수 있습니다. 또한, @Injectable() 데코레이터를 사용하여 공급자 클래스에 의존성 주입(Dependency Injection) 기능을 적용할 수 있습니다.
userService라는 공급자를 만들고 userModule에 등록한다고 가정해봅시다.
예시코드입니다.
1. 클래스(class) 기반 공급자
service class로 예시를 적용해보았습니다.
import { Injectable } from '@nestjs/common';
import { CreateUserDto } from './dto/create-user.dto';
import { UpdateUserDto } from './dto/update-user.dto';
@Injectable()
export class UserService {
create(createUserDto: CreateUserDto) {
return 'This action adds a new user';
}
findAll() {
return `This action returns all user`;
}
findOne(id: number) {
return `This action returns a #${id} user`;
}
update(id: number, updateUserDto: UpdateUserDto) {
return `This action updates a #${id} user`;
}
remove(id: number) {
return `This action removes a #${id} user`;
}
}
위 코드에서 @Injectable() 데코레이터를 사용하여 클래스를 공급자로 등록합니다. UserService클래스는 데이터베이스와 관련된 작업을 수행하는 공급자입니다.
2. 팩토리 함수 기반 공급자
import { Injectable } from '@nestjs/common';
@Injectable()
export class DatabaseService {
constructor(private config: ConfigService) {}
async query(sql: string): Promise<any> {
// 데이터베이스 쿼리 실행 및 결과 반환
}
}
@Injectable()
export class DatabaseServiceFactory {
createDatabaseService(): DatabaseService {
const configService = new ConfigService();
const databaseService = new DatabaseService(configService);
return databaseService;
}
}
위 코드에서 @Injectable() 데코레이터를 사용하여 팩토리 함수와 팩토리 함수에서 생성한 클래스를 공급자로 등록합니다. DatabaseServiceFactory 클래스는 DatabaseService 클래스의 인스턴스를 생성하는 팩토리 함수를 제공합니다.
3. 값 기반 공급자
4. 외부 모듈 기반 공급자
import { Module } from '@nestjs/common';
import { BullModule } from '@nestjs/bull';
import { JobQueueService } from './job-queue.service';
@Module({
imports: [
BullModule.registerQueue({
name: 'job-queue',
redis: {
host: 'localhost',
port: 6379,
},
}),
],
providers: [JobQueueService],
exports: [JobQueueService],
})
export class JobQueueModule {}
등이 있습니다
'nest js' 카테고리의 다른 글
NestJs Pipe에 대하여 알아보자 (0) | 2023.04.06 |
---|---|
NestJs 미들웨어 (0) | 2023.04.06 |
NestJs controller에 대해 이해하기 (0) | 2023.04.06 |
NestJs cli 명령어 모음 (0) | 2023.04.06 |
NestJS 시작하기 (0) | 2023.04.05 |