尝试实例化命名(带注释)的类

Eri*_*ric 2 dependency-injection scala guice named playframework-2.4

首先,感谢您为尝试回答该问题所做的任何努力。从当前应用程序注入器(play.api.Play.current.injector),如何获取类的命名实例?我试图将注入器转换为ScalaInjector(net.codingwell.scalaguice.InjectorExtensions.ScalaInjector)和Guice注入器(com.google.inject.Injector),但均未成功。问题在于,只有3种方法可以实例化一个类,所有方法都重载了instanceOf [T]

Jon*_*nso 7

对于正常的依赖关系,您可以

play.api.Play.current.injector.instanceOf[ProjectRepo]
Run Code Online (Sandbox Code Playgroud)

当您要检索命名的依赖项时,可以执行

val qualifier = Some(QualifierInstance(Names.named("name")))
val bindingKey = BindingKey[ProjectRepo](Class[ProjectRepo], qualifier)

play.api.Play.current.injector.instanceOf[ProjectRepo](bindingKey)
Run Code Online (Sandbox Code Playgroud)

无论如何,仅应在极少数情况下直接使用注入器,以确保没有更简单的方法来检索依赖项。