2017-01-31 1 views

답변

1

아니요, DI 컨테이너 자체는 서비스 로케이터가 아니지만 하나 같이 사용할 수 있습니다. 그것은 그것의 사용에 전적으로 의존한다.

컨테이너 Composition Root 안에 사용하는 경우 서비스 로케이터는 not입니다. 그러나 컨테이너 을 컴 퓨션 루트 외부에 사용하면 컨테이너에 대한 호출 (또는 그 추상화)이 Service Locator anti-pattern의 형식이됩니다.

2

둘 사이의 구분 언급 article이 마틴 파울러 :

두 패턴 사이의 중요한 차이는 그 구현이 응용 프로그램 클래스에 제공되는 방법에 대해입니다. 서비스 로케이터를 사용하면 응용 프로그램 클래스가 로케이터에 대한 메시지로 명시 적으로 요청합니다. 인젝션을 사용하면 명시 적 요청이 없으므로 서비스가 응용 프로그램 클래스에 표시되므로 제어가 역전됩니다.

+0

인용문은 "Service Locator vs Dependency Injection"에서 인용 한 것입니다. 따옴표는 의존성 삽입과 서비스 위치의 차이점을 설명하지만 질문에는 대답하지 않습니다. 질문은 * Container *에 관한 것입니다. Dependency Injection * 및 * Service Location을 모두 수행 할 수있는 도구. – Steven

관련 문제