자바스크립트를 허용해주세요.
[ 자바스크립트 활성화 방법 ]
from Mohon Aktifkan Javascript!
 

[NestJS] 5장 의존성 주입 - DI

728x90

 ✅ 1. 기본 개념

NestJS에서 의존성 주입(DI)은 클래스(Controller, Service 등)가 직접 객체를 생성하지 않고, IoC 컨테이너가 NestJS에서 필요한 인스턴스를 대신 생성해 주입하는 방식입니다.  @Injectable() 데코레이터가 붙은 클래스는 NestJS가 관리하는 Provider로 등록됩니다. 


✅ 2. Controller ->  Service 주입

// user.service.ts
import { Injectable } from "@nestjs/common";

@Injectable()
export class UsersService {
  getUsers() {
    return ["user1", "user2"];
  }
}



// user.controller.ts
import { Controller, Get } from "@nestjs/common";
import { UsersService } from "./users.service";

@Controller("user")
export class UsersController {
  constructor(private readonly userService: UsersService) {} // 자동 주입

  @Get()
  findAll() {
    return this.userService.getUsers();
  }
}
  • constructor(private readonly userService: userService) 부분은 NestJS가 UserService 인스턴스를 자동으로 넣어주는 코드임

✅ 3. 모듈 단위 등록

Service와 Controller는 반드시 같은 모듈 또는 imports된 모듈 안에 있어야 주입이 가능합니다.

// user.module.ts
import { Module } from "@nestjs/common";
import { UsersController } from "./users.controller";
import { UsersService } from "./users.service";

@Module({
  providers: [UsersService], // Provider 등록
  controllers: [UsersController],
  exports: [UsersService], // 다른 모듈에서 사용할 경우 exports 피룡
})
export class UsersModule {}

✅ 4. 모듈 간 공유 (exports + imports)

// app.module.ts
import { Module } from "@nestjs/common";
import { UsersModule } from "./users/users.module";

@Module({
  imports: [UsersModule], // 다른 모듈 가져오기
})
export class AppModule {}
  • UserModule에서 UserServiceexports 해놨기 때문에, AppModule이나 다른 모듈에서도 UserService를 주입할 수 있음

 

 

GitHub - Koras02/nestjs-tutorial-blog

Contribute to Koras02/nestjs-tutorial-blog development by creating an account on GitHub.

github.com

 

728x90
LIST

'Back-End > NestJS' 카테고리의 다른 글

[NestJS] 6장 DTO & Validation  (0) 2025.08.29
[NestJS] 4장 모듈  (0) 2025.08.14
[NestJS] 3장 프로바이더  (0) 2025.03.07
[NestJS] 2장 컨트롤러  (0) 2025.03.07
[NestJS] 1장 NestJs의 탄생 Nestjs는 무엇인가?  (0) 2025.02.11