ActiveXObject描述了如何在控制器级别使用缓存,但是在模型级别呢?
解决方案是在控制器级别注入它,然后在每次调用模型时传递它,但这看起来很尴尬,更好的实现是模型处理自己的缓存机制而不必修改控制器,没有控制器甚至知道它。
有更好的解决方案吗?
答案 0 :(得分:0)
试试JedisPool。 redis的实现。
您需要在使用redis缓存之前禁用默认缓存模块。 play.modules.disabled = [" play.api.cache.EhCacheModule"]
在build.sbt。
中" com.typesafe.play.modules" %%" play-modules-redis" %" 2.4.0",
答案 1 :(得分:0)
您可以在项目的任何类中使用缓存,我在我的java项目中使用了以下代码:
public class ProductServiceImpl implements ProductService {
private final WSClient ws;
private UserService userService;
private CacheApi cache;
@Inject
public ProductServiceImpl(WSClient ws) {
this.ws = ws;
}
@Inject
public void setCache(CacheApi cache) {
this.cache = cache;
}
@Inject
public void setUserService(UserService userService) {
this.userService = userService;
}
}
但是在Scala我认为你可以这样做:
import javax.inject._
import play.api.cache._
class Model @Inject() (cache: CacheApi) {
// ...
}
注意:
@Inject注释可用于字段或构造函数
有关如何在Play scala上使用@Inject注释的更多信息:https://www.playframework.com/documentation/2.4.x/ScalaDependencyInjection#Declaring-dependencies