IoC Container

@Injectable과 providers 배열은 어떤 토큰을 어떤 구현으로 만들지 알려준다

컨테이너는 생성자 타입 정보를 읽고 provider 저장소에서 필요한 인스턴스를 찾아 주입한다.

단계컨테이너가 하는 일효과테스트에서 바꾸는 지점
01 Token조회생성자가 요구한 UserService 타입을 provider 저장소에서 찾음컨트롤러는 구현 생성 책임을 모름같은 토큰에 mock 연결
02 Resolve재귀 해결서비스가 필요한 다른 provider를 먼저 준비의존성 그래프를 컨테이너가 관리빠진 provider가 조립 단계에서 드러남
03 Inject인스턴스 주입기본 singleton provider를 만들어 재사용수명 주기 정책을 코드 밖에서 조정request scope나 override 정책 확인

핵심: 컨트롤러는 필요한 계약만 생성자로 드러내고, 컨테이너가 생성·주입·수명 주기를 맡는다.