{
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 혹은 비동기 설정이 필요한 경우