2012-07-23 1 views
2

의 '주입'http://tech.puredanger.com/2007/07/03/pattern-hate-singleton/Guice와이 글 읽은 후 구글 Guice을 tryied 인젝터

을하지만 이해하지 못했다 뭔가가있다 : 당신이 Guice의 @Singleton의 말뭉치 주석을 사용하는 경우, 주입이 동일한 주입 하나의 인젝터에만 적용됩니다.

다른 인젝터를 다른 곳에서 만들면 @Singletion이 작동하지 않습니다 (설명서에 명시된대로).

그래서 인젝터 인스턴스를 코드의 모든 부분에 전달하거나 싱글 톤에서 사용할 수 있도록해야합니다.

그리고 이것은 피하고 싶습니다.

매번 동일한 인스턴스를 반환 할 수 있도록 injectorS를 관리하는 방법은 무엇입니까?

감사합니다.

+1

> 다른 인젝터를 다른 곳에서 만들면 왜 다른 인젝터를 만드나요? –

+0

@ mlk이 튜토리얼을 따라 Guice를 tryied했기 때문에 http://code.google.com/p/google-guice/wiki/GettingStarted와 인젝터에서 getInstance를 호출하여 객체를 빌드합니다. 하지만 그 인젝터가 내 응용 프로그램의 모든 곳으로 전달되어야한다고 생각하지 않습니다. –

+0

당신이 가지고 있어야하는 것은 하나의 객체 트리이며, 메인에는 월드가되는 부트 스트랩 클래스가 있습니다. –

답변

3

Guice를 사용하는 코드는 일반적으로 인젝터 자체에 액세스 할 필요가 없습니다. 개체는 종속성 또는 두 개 이상을 구성해야하는 경우 해당 종속성에 대해 Provider<T>을받습니다.

일반적으로 객체는 인젝터가 필요하지만 인젝터에서 생성되지는 않습니다 (따라서 종속성을 주입 할 수 없습니다). 어디서나 Guice를 사용한다면 애플리케이션 시작시에만 Guice를 사용해야 할 것입니다. Guice를 프로젝트의 일부로 만 사용하는 경우 인젝터는 현재 액세스중인 다른 모든 싱글 톤을 프록시하는 단일 싱글 톤이됩니다.

주석이 달린 클래스 @Singleton은 삽입되지 않은 싱글 톤과 관련된 수하물이 없어도 여전히 싱글 톤 객체입니다. 당신은 여전히 ​​너무 많이 의존하지 않도록 노력해야합니다.

관련 문제