본문 바로가기
  • optimuslee
Nestjs

[Nestjs] 5-1. 공유 모듈 (shared modules)

by OptimusLee 2022. 4. 27.
728x90
반응형

Nest 프레임워크에서 모듈은 기본적으로 싱글톤입니다. 여기서 싱글톤이란 어플리케이션이 시작될 때 어떤 클래스가 최초에 한번만 메모리를 할당하고 그 메모리에 인스턴스를 만들어 사용하는 디자인 패턴입니다. 이런 특성 덕분에 Nest는 인스턴스를 매번 만들지 않고, 모듈에서 DI(의존성 주입)를 통해 가져옵니다. 

 

모든 모듈은 자동으로 공유 모듈이며 생성되면 재사용할 수 있습니다. 모듈에서 프로바이더를 export하면 다른 곳에서 해당 모듈을 import하면 export한 프로바이더에 접근할 수 있습니다. 사용 예시는 아래와 같습니다.

import { Module } from '@nestjs/common';
import { CatsController } from './cats.controller';
import { CatsService } from './cats.service';

@Module({
  controllers: [CatsController],
  providers: [CatsService],
  exports: [CatsService]
})
export class CatsModule {}

 

위의 예시를 기준으로 설명하면, CatsModule을 가져오는 모든 모듈은 CatsService에 접근할 수 있습니다. 그리고 모든 모듈들은 동일한 인스턴스를 공유하게 됩니다. 

 

 

728x90
반응형