2016-02-22 9 views
1

Прежде всего, спасибо за любые усилия, чтобы попытаться ответить на вопрос. Из текущего приложения инжектор (play.api.Play.current.injector), как мне получить Именованный экземпляр класса? Я попытался включить инжектор в ScalaInjector (net.codingwell.scalaguice.InjectorExtensions.ScalaInjector) и в Guice Injector (com.google.inject.Injector), обе неудачные. Проблема заключается в том, что есть только три метода для создания экземпляра класса, все они перегружены InstanceOf [T]Попытка создания экземпляров названных (аннотированных) классов

ответ

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) 

в любом случае вы должны использовать только инжектор непосредственно в очень редких случаях, убеждается не существует более простой способ получения ваших зависимостей.

+0

Это для тестов в основном, поэтому я могу получить объект раньше и установить атрибуты теста. – Eric

+0

Если все, что вы хотите сделать, это издеваться над некоторыми зависимостями, вы можете следовать https://www.playframework.com/documentation/2.4.x/ScalaTestingWithGuice#Overriding-bindings-in-a-functional-test –

+0

Ваш вопрос очень специфичен получение Именованного экземпляра с использованием инжектора, в настоящее время ответ об этом. –

 Смежные вопросы

  • Нет связанных вопросов^_^