모듈(Modules)

스크린샷 2023-11-30 오후 12.45.45.png

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';

@Module({
  imports: [],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

providers

모듈이 생성하고, 의존성 주입 컨테이너에 추가할 클래스 인스턴스 또는 값의 배열 주로 서비스와 레포지토리 등이 여기에 포함됨

controllers

모듈이 정의하는 컨트롤러의 배열, 컨트롤러는 클라이언트의 요청을 처리하고, 적절한 응답을 반환하는 역할

imports

모듈이 의존하는 다른 모듈의 배열, NestJS는 이러한 모듈들을 현재 모듈의 providers와 controllers가 사용할 수 있도록 제공

exports

모듈에서 제공하며, 다른 모듈에서 import하여 사용할 수 있는 providers의 배열

기능 모듈 (Feature Modules)

import { Module } from '@nestjs/common';
import { UsersController } from './users/controller';
import { UserService } from './users/service';

@Module({
	controllers: [UsersController],
	prodivers: [UsersService],
})
export class UsersModule {}

애플리케이션의 특정 기능을 캡슐화 예) 사용자관리, 상품관리, 주문처리 등 특정 기능에 대해 컨트롤러, 서비스, 리포지토리 등을 그룹화

공유 모듈 (Shared Modules)

import { Module } from '@nestjs/common';
import { DatabaseService } from './database.service';

@Module({
	proviers: [DatabaseService],
	exports: [DatabaseService],
})
export class DatabaseModule {}

애플리케이션 전반에 공유되는 기능을 제공 예를 들면 데이터베이스 접속, 로깅 인증 등 공통적인 작업을 수행하는 기능들을 Shared 모듈로 구성할 수 있음

공유 모듈의 적용 예

import { Module } from '@nestjs/common';
import { UsersController } from './users/controller';
import { UserService } from './users/service';
import { DatabaseService } from './database.service';

@Module({
	imports: [DatabaseModule],
	controllers: [UsersController],
	prodivers: [UsersService],
})
export class UsersModule {}

@Global()