Nest DI & IOC

JeongYong·2023년 11월 12일
0
post-thumbnail

서문

Nest에서는 종속성 주입(DI)이라는 강력한 디자인 패턴을 기반으로 구축되었습니다. 그래서 이 글에서 구체적으로 어떻게 종속성 주입을 지원하는지 알아보겠습니다. (여기서 DI는 IOC의 구체적인 방법을 의미합니다.)

Nest 공급자

Nest는 공급자라는 개념을 사용합니다. 공급자의 주요 아이디어는 종속성으로 주입될 수 있다는 것입니다. 이는 객체가 서로 연결되며 다양한 관계를 생성할 수 있으며 이러한 기능이 주로 Nest 런타임 시스템에 위임될 수 있음을 의미합니다.

공급자를 정의하기 위해서는 @Injectable() 데코레이터를 사용합니다. 이 데코레이터는 IOC@Injectable 컨테이너에서 관리할 수 있는 클래스임을 선언하는 메타데이터를 연결합니다.

import { Injectable } from '@nestjs/common';
@Injectable()
export class example {}

다음과 같이 module 파일에 @module()을 수정해서 공급자를 등록해 줍니다.

import { Module } from '@nestjs/common';
import { example } from './example.service';
@Module({
  providers: [example],
})

즉, Nest를 실행했을 때 IOC 컨테이너가 생성되고, 그 안에는 관리하고 있는 공급자가 인스턴스로 존재합니다. IOC 컨테이너는 이 인스턴스의 라이프 사이클을 관리하고, 필요한 곳에 주입해 주는 역할을 합니다. 그래서 우리는 의존성을 직접 관리할 필요 없습니다. (IOC가 클래스의 인스턴스를 생성하고 알아서 주입해 주기 때문에)

(DI와 IOC의 개념과 장점은 https://velog.io/@shinjy9802/Nest-js-%EA%B0%9C%EB%85%90-%EC%A0%95%EB%A6%AC 이 포스트를 확인해주세요.)

참고문헌
https://docs.nestjs.com/providers

0개의 댓글