DI를 관리하는 DI 및 DI 컨테이너에 대해 조금 읽었습니다.DI 컨테이너 및 구체적인 값/구성 데이터
기본적으로 의존성이있는 클래스를 만들고 생성자 또는 설정 메소드를 사용하여 주입 할 수있는 방법을 제공합니다. 그런 다음 DI 컨테이너에 모든 것을 연결하는 데 사용할 구체적인 클래스를 알려줍니다. 마지막으로 서비스 로케이터 (service locator)를 호출합니다.이 서비스 로케이터는 모든 의존성을 해결하고 단 한 줄의 코드만으로 복잡한 객체를 제공합니다.
나는 구체적인 DI 컨테이너 구현을 한 번도 사용하지 않았기 때문에 DI 컨테이너가 어떻게 가장 낮은 레벨의 객체를 처리하는지 궁금합니다. 이러한 객체는 대부분 구체적인 (코딩 된) 값 또는 구성 파일의 내용을 사용하여 구성해야합니다. 예를 들어이 걸릴 :
class FooDao {
public FooDao(DBConnection db) {...}
}
class ConcreteDBConnection : DBConnection {
public ConcreteDBConnection(String url, int port, String user, String pw)
{...}
}
당신은 당신이 ConcreteDBConnection 객체로 FooDao의 객체를 생성 할 것인지, (주석, XML 파일, 또는 뭔가 다른 사용) DI 컨테이너를 말할 것. 그러나 DI 컨테이너에 데이터베이스 연결에 필요한 구체적인 값을 어떻게 설명합니까? 구체적인 값을 먼저 계산해야하는 경우 (예 : 로컬에 저장된 데이터베이스 연결 정보를 암호화하는 경우)
나는 이것이 매우 일반적인 질문이지만, DI 컨테이너에 관해 읽은 기사 또한 매우 일반적이었고이 점이 나를 혼란스럽게 만들었다. 어떤 인기있는 DI 프레임 워크가 이것을 어떻게하는지에 대한 간단한 설명은 나의 질문에 답하기에 충분할 것입니다.
[의존성 주입 방지 패턴 : 구성 요소에 런타임 데이터 주입] (https://www.cuttingedge.it/blogs/steven/pivot/entry.php?id=99&month=11&year=2015) 및 [왜 우리는 추상적 인 공장 디자인 패턴이 필요합니까?] (http://stackoverflow.com/q/2280170/181087) – NightOwl888