Skip to content

Dependency injection

elle510 edited this page Nov 30, 2016 · 1 revision

Dependency injection

Dependency injection은 클래스의 새로운 인스턴스에 필요한 완전한 종속성을 제공하는 방법입니다. 대부분의 종속성은 서비스입니다. Angular는 새로운 구성 요소에 필요한 서비스를 제공하기 위해 종속성 주입을 사용합니다.

app/hero-list.component.ts (constructor)

  constructor(private service: HeroService) { }

Angular가 구성 요소를 만들면 먼저 구성 요소에 필요한 서비스를 injector에 요청합니다.

injector는 이전에 생성 한 서비스 인스턴스의 컨테이너를 유지 관리합니다. 요청 된 서비스 인스턴스가 컨테이너에 없으면 injector는 서비스를 Angular로 반환하기 전에 컨테이너에 컨테이너를 추가합니다. 요청 된 모든 서비스가 확인되고 반환되면 Angular는 해당 서비스를 사용하여 구성 요소의 생성자를 인수로 호출 할 수 있습니다. 이것이 dependency injection 입니다.

HeroService의 주입 과정은 다음과 같습니다.

injector에 HeroService가 없는 경우 어떻게 만들 수 있는지 알 수 있을까? 요약하자면 HeroService provider를 injector에 등록한 적이 있어야합니다. provider는 일반적으로 Service Class 자체를 생성하거나 반환 할 수있는 Service입니다.

provider를 Module 또는 구성 요소에 등록 할 수 있습니다. 일반적으로 서비스의 동일한 인스턴스가 모든 곳에서 사용 가능하도록 provider를 root Module에 추가하십시오.

app/app.module.ts (module providers)
  providers: [
    BackendService,
    HeroService,
    Logger
  ],

또는 @Component 메타 데이터의 providers 속성에있는 구성 요소 수준에 등록합니다.

app/hero-list.component.ts (component providers)
  @Component({
    moduleId: module.id,
    selector:    'hero-list',
    templateUrl: 'hero-list.component.html',
    providers:  [ HeroService ]
  })

구성 요소 수준에 등록하면 해당 구성 요소의 새로운 인스턴스가 나올 때마다 서비스의 새 인스턴스를 얻게됩니다.

의존성 주입에 대해 기억해야 할 점 :

  • Dependency Injection은 Angular 프레임 워크에 연결되어 어디서나 사용됩니다.

  • injector가 주요 메커니즘입니다.

    • injector는 생성 한 서비스 인스턴스의 컨테이너를 유지 관리합니다
    • injector는 provider로부터 새로운 서비스 인스턴스를 생성 할 수 있습니다.
  • provider는 서비스를 만드는 방법입니다.

  • provider에 injector를 등록하십시오.

Clone this wiki locally