Я пытаюсь создать простую службу для отправки электронных писем с использованием платформы Lagom и Scaladsl. Я пытаюсь использовать плагин Play Mailer для обработки электронных писем, но я изо всех сил пытаюсь внедрить его в реализацию службы.
Я создал сервисный трейт и реализацию, передав mailerClient
в качестве зависимости в конструкторе.
trait MailerService extends Service { ... }
class MailerServiceImpl(mailerClient: MailerClient, persistentEntityRegistry: PersistentEntityRegistry) extends MailerService {
...
}
Я подключаю службу в ApplicationLoader, следуя шаблону, описанному в документации Lagom и в приложении hello world с помощью macwire.
abstract class MailerApplication(context: LagomApplicationContext)
extends LagomApplication(context)
with CassandraPersistenceComponents
with AhcWSComponents {
override lazy val lagomServer: LagomServer = serverFor[MailerService](wire[MailerServiceImpl])
override lazy val jsonSerializerRegistry = MailerSerializerRegistry
persistentEntityRegistry.register(wire[MailEntity])
}
Когда я пытаюсь скомпилировать, я получаю следующую ошибку.
[ошибка] /.../workspace/mailer/mailer-impl/src/main/scala/com/example/mailer/impl/MailerApplicationLoader.scala:92: не удается найти значение типа: [play.api.libs. mailer.MailerClient]
Я думал, что macwire сможет разобраться в зависимостях от конструктора, но похоже, что это не совсем так. Я пробовал разные варианты, например, безуспешно пытался подключить его явно в загрузчике приложений.
Я почти уверен, что есть что-то неправильное в том, как работает DI в Lagom, но я не могу понять это.
Любые идеи?