使用 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.
来自 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.