Прежде всего, спасибо за любые усилия, чтобы попытаться ответить на вопрос. Из текущего приложения инжектор (play.api.Play.current.injector), как мне получить Именованный экземпляр класса? Я попытался включить инжектор в ScalaInjector (net.codingwell.scalaguice.InjectorExtensions.ScalaInjector) и в Guice Injector (com.google.inject.Injector), обе неудачные. Проблема заключается в том, что есть только три метода для создания экземпляра класса, все они перегружены InstanceOf [T]Попытка создания экземпляров названных (аннотированных) классов
1
A
ответ
3
Для нормального зависимости вы могли бы сделать
play.api.Play.current.injector.instanceOf[ProjectRepo]
Если вы хотите, чтобы получить именованную зависимость вы можете сделать
val qualifier = Some(QualifierInstance(Names.named("name")))
val bindingKey = BindingKey[ProjectRepo](Class[ProjectRepo], qualifier)
play.api.Play.current.injector.instanceOf[ProjectRepo](bindingKey)
в любом случае вы должны использовать только инжектор непосредственно в очень редких случаях, убеждается не существует более простой способ получения ваших зависимостей.
Это для тестов в основном, поэтому я могу получить объект раньше и установить атрибуты теста. – Eric
Если все, что вы хотите сделать, это издеваться над некоторыми зависимостями, вы можете следовать https://www.playframework.com/documentation/2.4.x/ScalaTestingWithGuice#Overriding-bindings-in-a-functional-test –
Ваш вопрос очень специфичен получение Именованного экземпляра с использованием инжектора, в настоящее время ответ об этом. –