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

问题描述 投票:1回答:2

一个例子可能更容易理解这个问题。

我正在使用Guice创建注入器:

  val injector = Guice.createInjector(new Module)

使用以下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个绑定类中的哪一个?

如果以下调用之一注入另一个类中的一个,则此问题似乎有意义。

谢谢你的回答。

scala guice
2个回答
1
投票

这就是Injection框架为您所做的事情。

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

在启动时,所有绑定都会得到验证(例如,如果您有循环,则会抱怨)。然而,实例化是在需要时(懒惰) - 例外是eager singleton

如果我误解你,请评论。


0
投票

@Provides方法上使用@SingletonprovideDummyService就足够了。 Guice会找到用@Provides注释的方法并为你做接线。它使用Java Reflection完成此操作。无需在configure()方法中添加任何内容。

https://github.com/google/guice/wiki/ProvidesMethods

© www.soinside.com 2019 - 2024. All rights reserved.