Angular 의존성 주입 컨텍스트: 핵심 개념과 사용법
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

Angular 의존성 주입 컨텍스트 이해

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

웹 개발

대상자

  • 대상: Angular 개발자 (중급 이상)
  • 난이도: 중급 (의존성 주입 메커니즘 이해 필요)

핵심 요약

  • 의존성 주입 컨텍스트는 Angular가 의존성을 해결할 수 있는 범위를 정의합니다.
  • inject() 메서드를 사용하여 생성자 외부에서도 의존성을 주입할 수 있습니다.
  • 서비스, 컴포넌트, 팩토리 함수 내에서 주입 컨텍스트가 사용 가능하며, 계층 구조에 따라 주입 범위가 결정됩니다.

섹션별 세부 요약

1. **의존성 주입 컨텍스트 정의**

  • Angular는 컴포넌트, 디렉티브, 서비스가 의존성을 요청할 때 런타임 환경에서 해당 인스턴스를 결정합니다.
  • 주입 컨텍스트는 의존성 해결의 범위와 계층 구조를 관리합니다.

2. **inject() 메서드 사용법**

  • 기존 방식: 생성자에 의존성을 주입 (constructor(private http: HttpClient){})
  • 최신 방식: const http = inject(HttpClient);으로 생성자 외부에서도 주입 가능
  • @Injectable(providedIn: 'root')로 서비스를 전역 범위에 등록할 수 있습니다.

3. **의존성 주입 컨텍스트의 중요성**

  • 서비스가 필요한 위치에서 정확한 계층(컴포넌트/루트)에 맞는 주입이 이루어져야 함
  • 서비스가 없을 경우 부모 인젝터를 탐색하며, 없을 경우 에러 발생
  • providers 배열에서 서비스를 명시적으로 등록해야 할 경우도 있음

4. **주입 컨텍스트의 사용 범위**

  • 컴포넌트, 서비스, 디렉티브의 생성자 내부에서 사용 가능
  • 팩토리 함수에서도 사용 가능:

```ts

useFactory: () => {

const httpClient = inject(HttpClient); // 주입 컨텍스트 사용

return new ClassName(httpClient);

}

```

5. **자동 제공 컨텍스트 외부에서 inject() 사용**

  • runInjectionContext() 메서드를 사용하여 자동 제공 범위 외부에서도 주입 가능
  • 예시:

```ts

runInjectionContext(this.injector, () => {

const myService = inject(MyService); // 외부 컨텍스트에서 주입

});

```

결론

  • 의존성 주입 컨텍스트는 Angular 애플리케이션의 의존성 해결 핵심 요소로, 서비스 범위와 계층 구조를 명확히 정의해야 합니다.
  • inject() 메서드와 runInjectionContext()를 활용하여 유연한 주입 방식을 구현하는 것이 중요합니다.