본 문서는 Martin Fowler가 저술한 Inversion of Control Containers and the Dependency Injection pattern 문서를 번역 및 일부 의역한 것이다.
Java 커뮤니티에서 서로 다른 프로젝트의 컴포넌트들을 응집력 있는 어플리케이션으로 조합할 수 있도록 도와주는 경량 컨테이너(lightweight container)들이 속속 등장하고 있다. 이들 컨테이너이 컴포넌트들을 조합하기 위해 사용하는 공통적인 패턴이 있는데, 일반적으로 “Inversion of Control”으로 불리우는 개념이다. 본 문서에서 난 이 패턴의 좀 더 특화된 이름인 “Dependency Injection”의 동작 방식을 파고들고, Service Locator라는 대안과 비교할 것이다. 둘 사이의 선택은 사용으로부터 설정을 분리한다는 원칙에 비하면 중요한 것은 아니다.
Contents