[NestJS] Provider

Hocaron·2021년 12월 14일
0

NestJS

목록 보기
5/12

Provider

  • 객체는 서로 다양한 관계를 만들 수 있으며 객체의 인스턴스를 "연결"하는 기능은 대부분 Nest 런타임 시스템에 위임할 수 있다.
  • 다른 객체간에 @Injectable()의 데코레이터를 사용하여 의존성 주입 할수 있다.

Custom providers

  • 일반 값이나 동기/비동기 팩토리를 Provider로 정의할 수도 있다.
  • 사실 일반적으로 아래와 같이 providers로 전달하는 방법은 다양한 방법중에 Class Provider를 전달하는 방법을 약어로 설정한 것이다.
# 두 코드 동일
@Module({
  controllers: [CatsController],
  providers: [CatsService],
})

@Module({
  controllers: [CatsController],
  providers: [
	  {
	    provide: CatsService,
	    useClass: CatsService,
	  },
	];
})
  • IoC (Inversion Of Control) - 제어의 역전
    • 다른 의존 객체에게 필요한 의존성을 주입하는 역할을 한다, 의존성들을 관리해주는 역할
  • Optional Provider - @Optional()
    • 클래스는 구성 객체에 종속될 수 있지만 전달되는 것이 없으면 기본값을 사용해야하나 상위 Provider를 선택적으로 가져올 수 있다.
  • Property-based Injection - @Inject > property에도 의존성 주입 할 수있다.
    • 최상위 클래스가 하나 또는 여러 프로바이더에 의존하는 경우에 사용한다.
    • Provider의 constructor의 인수에 @Inject()데코레이터를 통해 다른 Provider의 의존성을 주입 받을 수 있다.
    • warn : 클래스가 다른 프로바이더를 확장하지 않는 경우 항상 생성자 기반 주입 사용을 선호한다.
  • Provider registration
    • 최종적으로 module에 provider를 정의하여 종속성을 맺는다.
profile
기록을 통한 성장을

0개의 댓글