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,谢谢你的回答。所以,每个类实例都是惰性绑定的?我调整了答案,如果使用接口实现抽象,大多数周期都可以解决。