NestJS는 확장 가능하고 유지 관리 가능한 Node.js 애플리케이션을 구축하기 위한 강력한 프레임워크입니다.
NestJS의 주요 기능 중 하나는 종속성 주입에 대한 기본 제공 지원으로, 이를 통해 애플리케이션의 종속성을 쉽게 관리할 수 있습니다.
NestJS에서 공급자는 다른 클래스에 주입할 수 있는 클래스로, 클래스 간의 종속성을 정의할 수 있습니다.
provider(공급자)는 NestJS의 종속성 주입 시스템의 핵심이며 애플리케이션 내 개체의 인스턴스화 및 수명 관리를 담당합니다.
NestJS에서 provider를 정의하려면 클래스를 만들고 @Injectable()를 됩니다.
- 프로바이더 TestService 클래스
import { Injectable } from '@nestjs/common';
@Injectable()
export class TestService {
constructor() {}
public doSomething() {
// ...
}
}
위 예제 코드의 TestService는 다른 클래스에 삽입할 수 있는 provider 클래스입니다.
@Injectable() 데코레이터는 이 클래스를 공급자로 사용할 수 있음을 NestJS에 알립니다. 이 경우 메서드 constructor는 비어 있지만 클래스에 다른 종속성을 주입하는 데 사용할 수 있습니다.
클래스에서 provider를 사용하려면 간단히 생성자 매개 변수로 포함할 수 있습니다.
- TestService 프로바이더를 TestController에 주입하여 사용
import { Controller, Get } from '@nestjs/common';
import { TestService } from ‘./test.service';
@Controller(‘test’)
export class TestController {
constructor(private testService: TestService) {}
@Get()
public getSomething() {
return this.testService.doSomething();
}
}
TestController는 TestService를 종속성으로 사용하는 클래스입니다.
TestService 클래스는 생성자 매개변수로 포함하여 TestController 클래스에 주입됩니다.
TestController 클래스의 getSomething 메서드는 TestService 인스턴스의 메서드를 호출하여 컨트롤러에서 쉽게 가져다 사용할 수 있습니다.
NestJS에서 공급자 및 종속성 주입을 사용하면 애플리케이션의 종속성을 쉽게 관리하고 코드를 쉽게 유지 관리하고 확장할 수 있습니다.
프로바이더를 사용하면 응용 프로그램의 다양한 구성 요소를 분리하여 코드를 더 쉽게 테스트하고 리팩터링 할 수 있으며 nestjs 서버실행 시 @Injectable()을 사용하여 프로바이더로 선언된 클래스는 nestjs IOC 컨테이너에서 관리하게 됩니다.
이렇게 IOC 컨테이너에 등록된 프로바이더는 객체형식으로 메모리에 등록되어 싱글턴형식으로 사용됩니다.
- 결론
제공자와 종속성 주입을 이해하는 것은 NestJS 애플리케이션 개발의 중요한 측면입니다.
공급자의 도움으로 확장 및 수정이 쉬운 확장 가능하고 유지 관리 및 테스트 가능한 응용 프로그램을 구축할 수 있습니다.
'개발 > NestJS' 카테고리의 다른 글
[NestJS]NestJS 에서 서비스 상태체크 하기(HealthCheck) (0) | 2023.02.04 |
---|---|
[NestJS] NestJS 설치 및 로컬 서버 실행 (2) | 2022.11.13 |