Проблема внедрения зависимостей для ReactiveMongo в Play 2

Я создаю веб-приложение, используя Play 2.6 и ReactiveMongo 0.13. Но когда я пытаюсь запустить приложение, я получаю этот вывод:

ProvisionException: Unable to provision, see the following errors:

1) No implementation for play.modules.reactivemongo.ReactiveMongoApi was bound.
  while locating play.modules.reactivemongo.ReactiveMongoApi
    for the 2nd parameter of controllers.Employees.<init>(Employees.scala:17)
...

1 error

Класс, на который ссылается эта ошибка, объявляется с помощью этого конструктора:

class Employees @Inject() (cc: ControllerComponents,
                           val reactiveMongoApi: ReactiveMongoApi,
                           implicit val materializer: akka.stream.Materializer
                          )

ReactiveMongo указано и должно быть введено.

Я прочитал в Интернете, что решение состоит в том, чтобы добавить следующую строку в application.conf:

play.modules.enabled += "play.modules.reactivemongo.ReactiveMongoModule"

Дело в том, что я сделал это, но все равно получаю ошибку внедрения зависимостей. Я не уверен, куда двигаться дальше.


person eje211    schedule 20.04.2018    source источник


Ответы (1)


На другом форуме мне подсказали, как решить эту проблему. Мне не хватало параметра конфигурации для выбора базы данных MongoDB. Опция выбора базы данных в Play — db, но ReactiveMongo использует свой собственный синтаксис. Мне пришлось добавить это к application.conf:

mongodb.uri="mongodb://localhost/collectionname"

Добавление этой строки вызвало активацию инъекции зависимостей.

Мне тоже пришлось уйти:

play.modules.enabled += "play.modules.reactivemongo.ReactiveMongoModule"

Оба нужны, хотя второго нет в документации.

person eje211    schedule 23.04.2018
comment
Обратите внимание, что Play db предназначен для JDBC, а не для БД с использованием другого подключения (NoSQL...) - person cchantep; 05.06.2018