NestJS에서 Provider는 의존성 주입(DI)을 위해 사용되는 핵심 개념
NestJS는 의존성 주입을 통해 코드의 모듈성과 테스트 용이성을 향상시킴
애플리케이션의 컴포넌트들을 느슨하게 결합함
간단히 말해서, Provider는 NestJS 애플리케이션에서 사용되는 클래스, 객체, 값 등을 제공하는 것
이것들은 주로 서비스, 리파지토리, 팩토리, 컨트롤러와 같은 애플리케이션의 다양한 부분에서 사용됨
의존성 주입: NestJS에서 Provider는 의존성 주입을 통해 다른 클래스나 컴포넌트에 주입됨
이를 통해 코드의 결합도를 낮추고 모듈 간의 의존성을 관리함
모듈성: NestJS 애플리케이션은 모듈로 구성됨
각 모듈은 Provider를 정의하고 다른 모듈에서 사용할 수 있음
이를 통해 코드를 모듈별로 구성하고 재사용 가능한 컴포넌트로 만듬
단위 테스트 (Unit Testing): 의존성 주입을 통해 테스트하기 쉬움
Provider를 Mock으로 대체하여 각 컴포넌트를 테스트할 수 있음(JS에서도 가능)
라이프사이클 관리: NestJS는 Provider의 라이프사이클을 관리함
주로 Singleton 또는 Transient와 같은 라이프사이클 옵션을 제공하여 각 Provider의 인스턴스를 관리함