DI container

IoC 컨테이너는 token으로 provider를 찾아 객체 그래프를 조립한다

컨테이너는 등록된 token, provider 방식, constructor parameter, lifecycle scope를 차례로 확인해 인스턴스를 만든다.

01 registerTOKEN과 provider 등록

useClass, useValue, useFactory를 묶는다.

02 resolve토큰으로 인스턴스 요청

호출자는 new 대신 container.get으로 진입 토큰을 요청한다.

03 graphconstructor 의존성 재귀 해결

Logger, Repository 같은 하위 토큰을 찾는다.

04 lifecyclescope에 맞게 재사용

singleton, transient, request 범위를 구분한다.

구분의미판단
tokenclass, symbol, string동일 계약의 구현체를 교체하는 키
provider구현 생성 방식테스트에서는 mock provider로 바꿀 수 있다.
scope인스턴스 수명재사용 범위를 잘못 잡으면 상태 공유 문제가 생긴다.

핵심 DI 컨테이너의 핵심은 객체 생성을 숨기는 것이 아니라 의존성 연결과 교체 지점을 명시적으로 관리하는 것이다.