DatabaseExecutionContext отсутствует в API Play - PullRequest
0 голосов
/ 06 марта 2020

Я следую указаниям БД, указанным здесь . Тем не менее, класс DatabaseExecutionContext отсутствует в API воспроизведения, и поэтому я не могу его импортировать.

Чего мне не хватает?

Ответы [ 2 ]

1 голос
/ 11 марта 2020

Пока вы уже получили ответ, я предлагаю вместо этого использовать базовую черту, такую ​​как:

import javax.inject.{Inject, Singleton}

import akka.actor.ActorSystem
import play.api.libs.concurrent.CustomExecutionContext

import scala.concurrent.ExecutionContext

trait DatabaseExecutionContext extends ExecutionContext

@Singleton
class DatabaseAkkaExecutionContext @Inject()(system: ActorSystem)
    extends CustomExecutionContext(system, "database.dispatcher")
    with DatabaseExecutionContext

Причина в том, что если вы этого не сделаете, вам потребуется принести Акку во время тестирования операций требуя этого контекста выполнения, с чертой, вы должны иметь возможность написать простого исполнителя для ваших тестов, такого как:

  implicit val globalEC: ExecutionContext = scala.concurrent.ExecutionContext.global

  implicit val databaseEC: DatabaseExecutionContext = new DatabaseExecutionContext {
    override def execute(runnable: Runnable): Unit = globalEC.execute(runnable)

    override def reportFailure(cause: Throwable): Unit = globalEC.reportFailure(cause)
  }

РЕДАКТИРОВАТЬ : я создал подробный пост объясняя это.

1 голос
/ 07 марта 2020

См. Пример кода здесь: https://github.com/playframework/play-samples/blob/2.8.x/play-scala-anorm-example/app/models/DatabaseExecutionContext.scala

import javax.inject._

import akka.actor.ActorSystem
import play.api.libs.concurrent.CustomExecutionContext

@Singleton
class DatabaseExecutionContext @Inject()(system: ActorSystem) extends CustomExecutionContext(system, "database.dispatcher")

Вам необходимо настроить этот контекст, как показано в документации: https://www.playframework.com/documentation/2.8.x/AccessingAnSQLDatabase#Using -a-CustomExecutionContext

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...