[데브캠프]nest.js 공식문서-provider

또또·2024년 5월 20일

nest.js 공식문서

목록 보기
1/6
post-thumbnail

provider란

어플리케이션이 제공하는 서비스 기능을 구현하고 수행하는 역할 -> 레이어드 아키텍쳐에서의 서비스계층
app.service.ts가 바로 provider

서비스

여기에 메서드를 정의 @Injectable()을 사용

JS

import { Injectable } from '@nestjs/common';
import { Cat } from './interfaces/cat.interface';

@Injectable()
export class CatsService {
  private readonly cats: Cat[] = [];

  create(cat: Cat) {
    this.cats.push(cat);
  }

  findAll(): Cat[] {
    return this.cats;
  }
}

인터페이스를 만들어 사용

export interface Cat {
  name: string;
  age: number;
  breed: string;
}

선택적 공급자

반드시 필요하지 않는 종속성이 있을 수 있음 이러한 경우 공급자가 없더라도 오류가 발생하지 않기때문에 종속성이 선택사항이 됨
공급자가 선택사항임을 나타내려면 @Optional()을 사용

import { Injectable, Optional, Inject } from '@nestjs/common';

@Injectable()
export class HttpService<T> {
  constructor(@Optional() @Inject('HTTP_OPTIONS') private httpClient: T) {}
}

DI

프로바이더는 의존성 주입이 가능하다
의존성 주입은 하나의 객체가 다른 객체의 의존성을 제공하는 것을 망한다
이를 통해 객체간의 결합도를 낮추고 코드의 재사용성과 테스트의 기능을 높일 수 있음

의존성이란 하나의 객체가 클래스나 다른 객체나 클래스를 필요로 하는 관계를 의미

public class Car {
    private Engine engine;

    public Car() {
        this.engine = new Engine();
    }

    public void start() {
        engine.run();
    }
}

이렇게 하나의 클래스가 다른 클래스에 의존하고 한 객체가 정상적으로 작동하기 위해서는 다른 객체가 필요할때를 말한다

profile
내가 바라던 곳이야 흔들리지 않게 맘을 잡아

0개의 댓글