TypeScript DI 주입 방식 선택 기준표
의존성이 필수인지, 호출마다 달라지는지, 객체 생성 이후 바뀌어야 하는지에 따라 생성자·메서드·setter 주입을 고릅니다.
객체가 항상 필요로 하는 Logger, Repository 같은 협력 객체에 적합합니다.
특정 작업에서만 필요한 트랜잭션, 임시 정책, 포맷터를 전달합니다.
생성 후 설정되거나 환경에 따라 교체되는 부가 기능에 사용합니다.
생성 시점에 빠진 의존성을 타입과 런타임 흐름으로 드러냅니다.
의존성이 필요한 메서드 안으로 사용 범위를 좁힐 수 있습니다.
테스트나 초기화 단계에서 나중에 의존성을 바꿀 수 있습니다.
의존성이 너무 많다면 클래스 책임이 커졌는지 먼저 점검합니다.
호출하는 쪽이 매번 어떤 의존성을 넘길지 알아야 합니다.
설정 전 호출을 막지 못하면 런타임 오류가 숨어들 수 있습니다.
기본 선택
필수 의존성은 생성자 주입을 먼저 고려하고, IoC 컨테이너도 이 흐름을 가장 안정적으로 해석합니다.
예외 선택
호출마다 달라지는 값은 메서드 주입, 정말 선택적인 설정은 setter 주입으로 제한해 객체 상태를 예측 가능하게 둡니다.