首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >急于在scalaguice中初始化单例执行元

急于在scalaguice中初始化单例执行元
EN

Stack Overflow用户
提问于 2015-04-09 23:19:05
回答 1查看 627关注 0票数 3

我想迫不及待地初始化一个单例演员。我目前正在做下面的工作,然后在我的应用程序启动过程中获取actor的实例。

代码语言:javascript
复制
`bind[Actor].annotatedWith(Names.named(LockCoordinator.name)).to[LockCoordinator].in[Singleton]`

我已经试过bind[Actor].annotatedWith(Names.named(LockCoordinator.name)).to[LockCoordinator].asEagerSingleton()

,但在运行时失败,使用

代码语言:javascript
复制
1) Error injecting constructor,   akka.actor.ActorInitializationException:   You cannot create an instance of [LockCoordinator] explicitly using the constructor (new). You have to use one of the 'actorOf' factory methods to create a new actor. See the documentation.

我已经为系统创建了一个eagerSingleton,但不知道如何将它应用于Actor (而不是ActorRef)

代码语言:javascript
复制
class ActorSystemProvider @Inject() (val config: Config, val injector: Injector) extends Provider[ActorSystem] {
override def get() = {

  val system = ActorSystem(config.getString("mysystem"), config)
  GuiceAkkaExtension(system).initialize(injector)
  system
}
}

有没有一种免费的样板方法来实现这一点?因为我想把这个应用到其他3-4个演员身上

EN

回答 1

Stack Overflow用户

发布于 2016-11-18 23:19:32

这有帮助吗?

https://gist.github.com/fancellu/e4e8acdc3d7fd3b9d749352f9d6c68e3

代码语言:javascript
复制
import actors.ActorBrowserActor
import com.google.inject.AbstractModule
import play.api.libs.concurrent.AkkaGuiceSupport

class Module extends AbstractModule with AkkaGuiceSupport{
  def configure(): Unit = {
    bindActor[ActorBrowserActor](ActorBrowserActor.NAME, _=>ActorBrowserActor.props)
  }
}

在这里,我们按名称注入参与者

代码语言:javascript
复制
class SampleController @Inject()(implicit system: ActorSystem, val messagesApi: MessagesApi, @Named("actor-browser-actor") actorBrowserActor: ActorRef)
  extends Controller  with I18nSupport{
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29542546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档