[Nest.JS] Static Module, Dynamic Module

장현수·2023년 7월 20일
0

Nest.JS

목록 보기
6/9

모듈은 싱글톤이라서 클래스 인스턴스가 하나만 생성된다.

Nest.JS에서 모듈을 정의하는 방법에는 두 가지가 있다.

Static modules, 정적 모듈

  • 기본적인 구성

Dynamic modules, 동적 모듈

  • 조건부로 구현

Static Modules, 정적 모듈

  • @Module 데코레이터를 사용한다
  • 주로 애플리케이션 루트 모듈 (app.module)에서 사용: 애플리케이션 시작점에서 모듈 로드
  • 애플리케이션 전체에서 사용 가능한 provider 정의
  • 주로 forRoot() 메소드로 설정값 제공
  • 단일 인스턴스로 관리되는 provider
@Module({
  imports: [
    TypeOrmModule.forRoot({
      type: 'postgres',
      host: 'localhost',
      port: 5432,
      username: 'user',
      password: 'password',
      database: 'mydb',
      autoLoadEntities: true,
      synchronize: true,
    }),
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

  • 모듈은 싱글톤(Singleton)이라서 인스턴스가 하나 뿐임

Dynamic Modules, 동적 모듈

  • @Module 데코레이터를 사용한다
  • 특정 기능, 도메인과 관련된 모듈 설정
  • 모듈간 연결 구성
  • 런타임 시 동적으로 구성
@Module({
  imports: [
    ConfigModule.forFeature(databaseConfig),
    AuthModule.forFeature(),
  ],
  controllers: [UsersController],
  providers: [UsersService],
})
export class UsersModule {}

위 예시 설명 :

  • ConfigModule.forFeature()는 UsersModule에서 사용하는 데이터베이스 구성에 대한 동적 모듈을 설정
  • AuthModule.forFeature()는 UsersModule에서 사용하는 인증에 필요한 동적 모듈을 설정
profile
개같이 발전하자 개발

1개의 댓글

comment-user-thumbnail
2023년 7월 20일

너무 좋은 글이네요. 공유해주셔서 감사합니다.

답글 달기