Scala 与Guice一起使用时,AbstractModule类绑定的顺序是什么?

Scala 与Guice一起使用时,AbstractModule类绑定的顺序是什么?,scala,guice,Scala,Guice,举个例子,这个问题可能更容易理解 我正在使用Guice创建喷油器: val injector = Guice.createInjector(new Module) 使用以下模块类: class Module extends AbstractModule { override def configure(): Unit = { val instance = aCallToGetAnInstance() bind(classOf[DummyClass]).toInstan

举个例子,这个问题可能更容易理解

我正在使用
Guice
创建喷油器:

  val injector = Guice.createInjector(new Module)
使用以下模块类:

class Module extends AbstractModule {

  override def configure(): Unit = {
    val instance = aCallToGetAnInstance()
    bind(classOf[DummyClass]).toInstance(instance)
    bind(classOf[DummyClass2]).asEagerSingleton()
  }

  @Provides
  @Singleton
  def provideDummyService: DummyService = {
    DummyService.standard.build()
  }

}
这3个绑定类中哪一个将首先绑定

如果以下调用之一注入另一个类,那么这个问题似乎是有意义的


感谢您的回答。

这就是注入框架为您所做的

只要代码中没有任何循环
guice
就可以解决它

在启动时,所有绑定都被验证(例如,如果您有周期,它会发出抱怨)。然而,实例化是在需要时进行的(惰性)-例外情况是
eager singleton


如果我误解了你,请发表评论。

providedemmyservice
方法上提供
@Singleton
,就足够了。Guice将找到带有
@注释的方法,并为您进行连接。它使用Java反射来实现这一点。不需要在configure()方法中添加任何内容


可能正在使用注入框架。哪一个?是的,
guice
,我更新了问题谢谢你的反馈;)哦,我看到你更新了问题。至于“首先绑定哪一个”,我的看法是:1)实例(DummyClass),2)DummyClass2 3)DummyService。这是因为3将是一个懒惰的提供者,2将是一个渴望的单例(它将在那里创建),1)是第一个,因为你先调用它。嗨@pme,谢谢你的回答。所以,每个类实例都是惰性绑定的?我调整了答案,如果使用接口实现抽象,大多数周期都可以解决。