[Angular] DI 수명(lifetime)Frontend/Angular2023. 8. 28. 13:36
Table of Contents
반응형
Transient
Transient 서비스는 주입될 때마다 생성됩니다. 즉, 컴포넌트(component)가 서비스를 주입할 때마다 서비스의 새 인스턴스가 생성됩니다. Transient 서비스의 예는 다음과 같습니다.
import { Injectable } from '@angular/core';
@Injectable()
export class TransientService {
private data: number;
constructor() {
this.data = Math.random();
}
getData() {
return this.data;
}
}
컴포넌트가 TransientService
를 주입하면 매번 서비스의 새 인스턴스가 생성됩니다.
Scoped
Scoped 서비스는 Angular 모듈당 한 번 생성됩니다. 이는 동일한 모듈 내의 컴포넌트(component)가 서비스를 주입할 때마다 동일한 서비스 인스턴스가 사용됨을 의미합니다. Scoped 서비스의 예는 다음과 같습니다.
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'my-module',
})
export class ScopedService {
private data: number;
constructor() {
this.data = Math.random();
}
getData() {
return this.data;
}
}
동일한 모듈 내의 컴포넌트가 ScopedService
를 주입하면 동일한 서비스 인스턴스가 사용됩니다.
Singleton
Singleton 서비스는 한 번 생성되고 동일한 인스턴스가 애플리케이션 전체에서 사용됩니다. 다음은 Singleton 서비스의 예입니다.
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root',
})
export class SingletonService {
private data: number;
constructor() {
this.data = Math.random();
}
getData() {
return this.data;
}
}
컴포넌트가 SingletonService
를 주입하면 애플리케이션 전체에서 동일한 서비스 인스턴스가 사용됩니다.
반응형
'Frontend > Angular' 카테고리의 다른 글
[Angular] 애니메이션(Animation) 설명 (0) | 2023.09.02 |
---|---|
[Angular] 성능 최적화(Performance optimization) (0) | 2023.09.01 |
[Angular] OpenLayers로 지도 생성 (0) | 2023.08.26 |
[Angular] cross-fetch 사용 방법 (0) | 2023.08.25 |
[Angular] HttpClient 사용 방법 (0) | 2023.08.21 |
@고지니어스 :: 규니의 개발 블로그
IT 기술과 개발 내용을 포스팅하는 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!