Я использую Lagom 1.6.x
, который построен на Play Framework 2.8.x
.
Lagom do c объясняет, как использовать классных c актеров, но не напечатанные. Согласно примечаниям к выпуску 1008 * это должно быть возможно. Когда я просто @Inject
akka.actor.typed.ActorSystem
в классе в Lagom, то Guice жалуется: «Нет реализации для akka.actor.typed.ActorSystem был связан». Инъекция classi c akka.actor.ActorSystem
работает отлично.
Play do c объясняет 2 подхода, которые приводят к множеству церемониальных шаблонов кода:
- «Внедрение зависимостей во время компиляции», которое использует
extends BuiltInComponentsFromContext
для получения ActorSystem
. См. здесь . - «Внедрение зависимостей во время выполнения», которое использует «типизированные» методы в AkkaGuiceSupport с провайдерами Guice. Смотрите здесь .
Мне удалось породить типизированного Актера с akka.actor.typed.javadsl.Adapter
и классом c ActorSystem
. Комментарий Java do c к методу spawn
гласит: «Создайте данное поведение как дочерний элемент пользователя в классе c ActorSystem», но я не знаю, будет ли это нормально запустить.
import akka.actor.ActorSystem;
import akka.actor.typed.javadsl.Adapter;
@Inject
public SomeClass(ActorSystem actorSystem) {
super(actorSystem);
ActorRef<SayHello> helloActor = Adapter.spawn(actorSystem, HelloActor.create(), "hello-actor");
helloActor.tell(new SayHello("Bob"));
}
Так это нормально или это вызовет проблемы позже?
Спасибо за любые предложения.