Создание приложения Lagom с использованием подхода DDD .Мы выделили черту FactoryService.scala, имеющую Создать и Вставить , в то время как черта RepositoryService.scala включает Чтение , Обновление и Удалить команды.Теперь возникает проблема, так как при реализации источников событий у нас может быть только один метод .setPrepare () в классе EventProcessor.scala.Таким образом, в идеале метод .setPrepare () должен содержать все команды для обновления, удаления и вставки, но, как мы разделили на фабрике и в репозитории.Это означает, что у нас есть один .setPrepare () для FactoryService и один .setPrepare () для RepositoryService.Теперь два .setPrepare () не могут работать вместе, только последние триггеры.
Наш обходной путь должен был иметь такую черту, как DatabaseService , которая расширена RepositoryService и FactoryService, как показано ниже:
trait DatabaseService {
def createPreparedStatements: Future[Done]
}
trait RepositoryService extends DatabaseService {
override def createPreparedStatements: Future[Done]
}
trait FactoryService extends DatabaseService {
override def createPreparedStatements: Future[Done]
}
Теперь у нас есть две разные реализации для createPreparedStatements in
RepositoryServiceImpl и
FactoryServiceImpl
DatabaseService , RepositoryService и FactoryService вводится другим классом, скажем Helper.scala .
Теперь при выполнении sbt runAll выдается ошибка:
Найдено несколько значений типа [com.impl.db.DatabaseService]: [List (репозиторий, фабрика, база данных)]
lazy val helper: Helper = wire [Helper]
^