2012-02-24 94 views
4

只是一个简单的问题,看看我是否正确理解范围。谷歌Guice定制范围

我知道范围是控制如何/何时创建实例。 现在我在应用程序中有一个类,我想要它的两个实例;每个人都会注入其他一些实例。

是否有可能在Guice中为每个实例创建两个范围?然后我可以按照我喜欢的方式将每个范围实例注入任何其他实例?

回答

5

的范围:

  1. 作用域允许你控制对象的生命周期。

  2. 您只能在bindScope()范围内注释一次。示波器的概念是喷射器级别:它是接线配置。

  3. 您可以将多个事物(键)绑定到一次作用域。

  4. 您可以根据需要定义多个范围,但每个绑定只能在一个范围内。

你还没有给你的问题的全部细节,但它是我的经验,在一个自定义的范围最初似乎是正确的答案大多数情况下,它很少实际上是!

也许你想要的是注释一种类型的两个实例?喜欢的东西:

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

然后你可以注入一个你想要的:

@Inject 
SomeConstructor(@First SomeService service) { 
} 

或:

@Inject 
SomeConstructor(@Second SomeService service) { 
} 

如果没有再帮你可能需要提供一些更详细你的问题。