본문 바로가기

개발/JavaScript

[NestJS] Modules, DI

 

Module

- movies.module 생성

import { Module } from '@nestjs/common';
import { MoviesController } from './movies.controller';
import { MoviesService } from './movies.service';

@Module({
  controllers: [MoviesController],
  providers: [MoviesService],
})
export class MoviesModule {}

 

- app.module: 페이지 home 활용

import { Module } from '@nestjs/common';
import { MoviesModule } from './movies/movies.module';
import { AppController } from './app.controller';

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

* main.ts에서 AppModule 생성 시 app.module에 import된 모듈을 하나의 모듈로 생성

 

NestJS에서는 모듈별 개발을 지향

독립된 movies 모듈

 

 

 

의존성 주입 Dependency Injection

- module.ts에서 provider 설정으로 의존성 주입

import { Module } from '@nestjs/common';
import { MoviesController } from './movies.controller';
import { MoviesService } from './movies.service';

@Module({
  controllers: [MoviesController],
  providers: [MoviesService], // 의존성 주입 설정
})
export class MoviesModule {}

- Controller에서 type만 선언해도 service를 가져옴: 생성자를 이용한 의존성 주입 권장

import { MoviesService } from './movies.service';

@Controller('movies') //controller 단위 url 설정
export class MoviesController {
  constructor(private readonly moviesService: MoviesService) {}// 타입 선언으로 의존성 주입
  ...
}

- Service에 @injectable() decorator 작성

@Injectable() // DI 대상 설정
export class MoviesService {
  ...
}

'개발 > JavaScript' 카테고리의 다른 글

[NestJS] logger, Configuration  (0) 2022.09.02
[NestJS] Unit Testing, End-to-End(E2E)  (0) 2022.08.10
[NestJS] DTO, 유효성 검사 Validation  (0) 2022.08.10
[NestJS] Controller, Service  (0) 2022.08.10
[NestJS] Project setup, 구조  (0) 2022.08.10