DI Container

DI 컨테이너 주입 구조

의존성 주입과 IoC 컨테이너는 new 호출을 숨기는 도구가 아니라 객체 생성 책임, 수명 주기, 테스트 대체, 모듈 경계를 관리하는 구조입니다.

01

토큰 정의

인터페이스 역할을 하는 token으로 구체 구현을 직접 참조하지 않게 합니다.

token
02

Provider 등록

class, value, factory provider로 생성 규칙과 외부 설정을 컨테이너에 올립니다.

provider
03

범위 결정

인스턴스를 애플리케이션 전체, 요청 단위, 호출 단위 중 어디서 재사용할지 정합니다.

범위
04

주입 실행

컨테이너가 생성 순서와 의존 그래프를 따라 필요한 객체를 주입합니다.

resolve
05

테스트 대체

테스트에서는 provider를 fake나 mock으로 바꿔 상위 정책만 검증합니다.

override
Singleton
공유 가능한 무상태 서비스 대부분의 서비스에 적합하지만 내부 mutable state를 조심해야 합니다.
기본값
Request
요청별 상태 필요 요청 context가 필요한 경우 유용하지만 생성 비용과 전파 범위가 커집니다.
성능 확인
Factory
환경 기반 생성 설정값, 외부 클라이언트, 조건별 구현 선택을 한 곳에서 처리합니다.
초기화 오류 처리

DI 설계 확인 기준

순환 의존 서로가 서로를 주입받는 구조는 책임 경계가 흐려졌다는 신호일 수 있습니다.
토큰 안정성 문자열 토큰은 충돌 위험이 있어 symbol이나 명확한 상수를 고려합니다.
테스트 대체성 외부 API와 DB를 쉽게 교체할 수 있어야 DI의 이점이 살아납니다.