我对使用Google Guice的依赖注入有疑问。
我有一个特点很少实现的方法
trait ATrait {
def someMethodA(parameters: ArgType) = {
//code
}
def someMethodB(parameters: ArgType) = {
//code
}
}
object A extends ATrait
现在我有一个B级,我需要Atrait的方法。所以我注射了它。
class B @Inject(a: ATrait) {
//code
}
我还在Guice模块类中给出了绑定。
class GuiceModule extends AbstractModule {
override def configure(): Unit = {
bind[ATrait].toInstance(A)
}
}
现在,当我创建一个B类对象时,
val b = new B()
它不会让我这样做,所以我的问题是如果我必须手动传递ATrait的对象。 Google Guice Injection有什么用?
我可能犯了一些错误,因为我正在学习这个。如果我没有正确理解,请指导我。
提前致谢。
Guice不会以这种方式工作。如果你想要一个新的根对象,你需要向Guice索取一个新的实例。
val injector = Guice.createInjector(new GuiceModule())
val a:ATrait = injector.getInstance(classOf[ATrait])