이전 글 : 4. Scopes - 심화 다음 글 :
비동기 객체 관련 지원이 존재하는 이유. → 비동기 작업(DB 연결, 네트워크 설정, 파일 I/O)이 필요한 객체의 생성과 초기화를 완벽하게 지원하기 위해서.
**주요 기능
- 비동기 팩토리 (Async Factories): 객체에 접근할 때마다 매번 새로운 인스턴스를 비동기적으로 생성합니다.
- 비동기 싱글톤 (Async Singletons): 비동기 초기화 로직을 거친 후 단일 인스턴스를 유지합니다.
- 의존성 관리 (Dependency Management): 다른 비동기 객체가 준비될 때까지 기다린 후 초기화를 진행하도록 자동 설정할 수 있습니다.
- 초기화 오케스트레이션 (Startup Orchestration): 복잡한 순서가 필요한 서비스들의 초기화 시퀀스를 조정합니다.
- 수동 신호 (Manual Signaling): 특정 객체가 ‘준비 완료’되었음을 세밀하게 제어할 수 있습니다.
관련 메서드 요약.
| 메서드 | 생성 시점 | 인스턴스 개수 | 생명주기 | 최적의 용도 |
|---|---|---|---|---|
| registerFactoryAsync | getAsync() 호출 시마다 | 매번 생성 (Many) | 요청 시마다 생성 | 접근 시마다 새로운 비동기 작업이 필요한 경우 |
| registerCachedFactoryAsync | 첫 접근 시 및 GC 이후 | 메모리에 있을 때 재사용 | 가비지 컬렉션 전까지 | 비용이 큰 비동기 작업의 성능 최적화 |
| registerSingletonAsync | 등록 즉시 | 하나 (One) | 영구적 | 앱 수준의 비동기 설정 서비스 (DB 등) |
| registerLazySingletonAsync | 첫 getAsync() 호출 시 | 하나 (One) | 영구적 | 항상 필요하지는 않은 무거운 비동기 서비스 |
| registerSingletonWithDependencies | 의존성 준비 완료 후 | 하나 (One) | 영구적 | 다른 서비스에 의존하는 비동기 서비스 |
비동기 팩토리
https://flutter-it.dev/documentation/get_it/async_objects#async-factories