【问题标题】:Google Guice custom scopeGoogle Guice 自定义范围
【发布时间】:2012-02-24 10:32:10
【问题描述】:

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

我了解范围是控制创建实例的方式/时间。 现在我在应用程序中有一个类,我想要它的两个实例;每一个都将被注入到其他实例中。

是否可以在 Guice 中为每个实例创建两个范围?然后我可以根据需要将每个作用域实例注入任何其他实例?

【问题讨论】:

    标签: java dependency-injection guice


    【解决方案1】:

    范围:

    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) {
    }
    

    如果这没有帮助,那么您可能需要详细说明您的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-14
      • 1970-01-01
      • 1970-01-01
      • 2010-12-03
      • 1970-01-01
      • 2015-07-07
      • 2017-09-13
      • 2015-12-11
      相关资源
      最近更新 更多