공부/NestJs

useValue, useClass, useFactory

kkkkkdddddhhhhh 2025. 1. 11. 23:39
{
  provide: 'CONFIG',
  useValue: {
    apiUrl: 'http://api.example.com',
    timeout: 3000
  }
}

1. useValue 

  • 직접 적인 값 주입 
  • 설정값, 상수 주입 혹은 테스트용 mock 객체 , 이미 생성된 인스턴스를 주입할 때 사용한다. 

 

{
  provide: PaymentService,
  useClass: StripePaymentService
}

2. useClass

  • 클래스의 인스턴스를 주입
  • 인터페이스 구현체를 주입할 때, 환경에 따라 다른 구현체를 사용할 때

 

 

{
  provide: 'DATABASE',
  useFactory: (config: ConfigService) => {
    return config.isDev 
      ? new DevDatabase() 
      : new ProdDatabase();
  },
  inject: [ConfigService]
}

3. useFactory 

  • 동적으로 Provider 를 생성할 때
  • 조건부 Provider 혹은 비동기 설정이 필요한 경우