Я хотел бы уменьшить шаблон, необходимый для связывания этих актеров akka.
В настоящее время мой код выглядит так:
bind(classOf[ActorRef]).
annotatedWith(Names.named("mines")).
toProvider(new TypeLiteral[ActorProvider[MyActor]]() {}).
asEagerSingleton()
Я бы тоже хотел, чтобы это выглядело так:
bindActor[MyActor].withName("mines")
Я пытался создать подкласс AbstractModule
, чтобы втиснуть эту концепцию, но безрезультатно.
Соответствующий код:
class ActorProvider[T <: Actor] @Inject() ( val key:Key[T], val injector:Injector, val system: ActorSystem ) extends Provider[ActorRef] {
def get = {
system.actorOf(Props(injector.getInstance(key)))
}
}