2012-06-20 2 views
0

클래스간에 종속 관계가있는 트리가 있다고 가정 해 보겠습니다. 사이클은 없지만 여러 단계로 깊게 진행됩니다. 맨 아래에는 최대 절전 모드 Session이 있습니다.guice를 맞춤 데이터 소스로 사용하기

MyService -> MyDao -> Session 
MyService -> MyCollaborator -> AnotherCollaborator 
MyCollaborator -> MyDao 
AnotherCollaborator -> MyDao 
AnotherCollaborator -> AnotherDao -> Session 

당신은 요점을 얻습니다.

Guice 외부에서 수동으로 Session을 만든 다음 Guice를 사용하여 MyService에서 전체 그래프를 생성하려면 Session을 사용하고 싶습니다. 내가 어떻게 해?. 당신이 Provider을 찾고있는 것처럼

답변

3

는 소리?

편집

공급자는 바인딩을 할 때 guice 선언 할 수있는 사용자 정의 공장입니다.

사용자는 불특정 다수의 인스턴스를 주입하거나 (공급자 자체를 주입하고 수동으로 호출 함) 유형의 생성자가 수행하지 않는 부작용 생성과 같은 흥미로운 작성 동작을 제공 할 수 있습니다.

따라서 의존성에 다른 제 3 자 API를 결혼을위한 편리한 도구입니다 : 원하는 각 유형에 대한 제공자를 생성하고이 필요한 어떤 설정을 할 수 있습니다.

는 구체적으로 그들은 당신이 수동으로 내부 만들려는 유형에 템플릿 단일 get() 방법을 제공하는 일반적인 인터페이스입니다.

+0

좀 더 구체적으로 기재 할 수 있습니까? 저는 그 예를 보았습니다. 한가지 예외는 있습니다. Connection이나 Session은 Guice에게 알려지지 않았습니다. –

+0

이것이 작동하려면, 어떻게 든 Guice 외부의 제 'Session'을 제공해야합니다. 그 구체적인 예를 들어 주시겠습니까? –

+0

아. 특정 인스턴스가있는 경우 정적 멤버 또는 스레드 로컬 어딘가에 밀어 넣을 수 있고 공급자에서 다시 검색 할 수 있습니다. 이것은 다소 요점을 무너 뜨 렸습니다. 'Session' 생성 코드를 공급자로 옮길 수 있습니까? – phs

관련 문제