0
我有一個外部庫(scala-redis),在初始化客戶端時需要隱式的ActorSystem。我想在我的Play(2.6)應用程序中將我的RedisClient作爲Singleton,因爲將它作爲Singleton是有意義的。需要引用AbstractModule中Singleton的Guice依賴關係
class CustomAppModule(environment: Environment,
configuration: Configuration) extends AbstractModule {
def configure() = {
//val system = getProvider(classOf[ActorSystem]).get()
//val system = ActorSystem()
//bind(classOf[ActorSystem]).toInstance(system)
val redis = RedisClient(configuration.get[String]("redis.host"))(system)
bind(classOf[RedisClient]).toInstance(redis)
}
}
第一個系統出現故障,因爲「供應商不能使用,直到注射器已創建」,因爲播放框架初始化ActorSystem本身第二系統出現故障時,應用程序啓動,以及第二系統失敗的原因爲「結合akka.actor.ActorSystem已經在play.api.inject.BuiltinModule中配置「。
那麼與Guice/DI開展這種情況的慣用方式是什麼?我是否需要一個包含RedisClient作爲值的包裝Singleton,以及可以注入ActorSystem的位置?