2012-02-24 5 views
4

범위를 올바르게 이해했는지 확인하는 간단한 질문.Google Guice 맞춤 설정 범위

범위는 인스턴스 작성 방법 및시기를 제어하는 ​​것으로 알고 있습니다. 이제 응용 프로그램에 클래스가 있고 두 인스턴스가 필요합니다. 각각 하나씩 다른 인스턴스에 주입됩니다.

Guice에서 각각의 인스턴스에 대해 두 개의 범위를 만들 수 있습니까? 내가 원하는대로 범위가 지정된 인스턴스를 다른 인스턴스에 주입 할 수 있습니까?

답변

5

스코프 :

  1. 스코프는 객체의 라이프 사이클을 제어 할 수 있습니다.

  2. bindScope() 범위 내역은 한 번만 가능합니다. 범위 개념은 인젝터 수준입니다. 배선 구성입니다.

  3. 여러 항목 (키)을 한 번 범위에 바인딩 할 수 있습니다.

  4. 원하는만큼 범위를 정의 할 수 있지만 각 바인딩은 하나의 범위에만있을 수 있습니다.

당신은 문제의 전체 세부 사항을 제공하지 않은,하지만 사용자 지정 범위가 정답으로 초기에 나타나는 대부분의 경우, 그것은 거의 실제로 나의 경험이다!

아마도 원하는 것은 한 유형의 두 인스턴스에 주석을 추가하는 것입니다. 뭔가 같은 :

@Inject 
SomeConstructor(@First SomeService service) { 
} 

나 : 그 다음에 도움이되지 않는 경우

@Inject 
SomeConstructor(@Second SomeService service) { 
} 

당신이 몇 가지 자세한 내용을 제공해야 할 수도 있습니다

bind(SomeService.class).in(First.class).to(FirstServiceImpl.class); 
bind(SomeService.class).in(Second.class).to(SecondServiceImpl.class); 

그런 다음 당신은 당신이 원하는 하나를 삽입 할 수 문제의