使用 Sedis 池就是 Play!框架对象

Use Sedis pool is Play! Framework object

来自 Play! 2.4 (Scala) Sedis 插件应该被注入 class 使用:

class TryIt @Inject()(sedisPool: Pool) extends Controller {
   val directValue: String = sedisPool.withJedisClient(client => client.get("someKey"))
}

但我需要在 Scala 对象中使用它(我正在编写授权过滤器,但它需要是一个对象)。 可能吗?

据我所知,您使用的是 Sedis play plugin which supports the Guice injection model. However, if you use only Sedis,独立于插件,您可以将其实例化为任何其他对象,如下所示:

val pool = new Pool(new JedisPool(new JedisPoolConfig(), "localhost", 6379, 2000))

编辑: 我刚刚检查过,将 Pool 也注入过滤器是完全可以的。我试过了。

class ExampleFilter @Inject() (sedisPool: Pool) extends Filter {
override def apply(nextFilter: (RequestHeader) => Future[Result])(rh: RequestHeader): Future[Result] = 
 {
    println(this.sedisPool)
    //do your stuff.
    nextFilter(rh)
 }
}

这是可能的,因为过滤顺序也是injected with Guice in 2.4.x.