모듈은 싱글톤이라서 클래스 인스턴스가 하나만 생성된다.
Nest.JS에서 모듈을 정의하는 방법에는 두 가지가 있다.
Static modules, 정적 모듈
- 기본적인 구성
Dynamic 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 {}
- @Module 데코레이터를 사용한다
- 특정 기능, 도메인과 관련된 모듈 설정
- 모듈간 연결 구성
- 런타임 시 동적으로 구성
@Module({
imports: [
ConfigModule.forFeature(databaseConfig),
AuthModule.forFeature(),
],
controllers: [UsersController],
providers: [UsersService],
})
export class UsersModule {}
위 예시 설명 :
너무 좋은 글이네요. 공유해주셔서 감사합니다.