有人可以用示例解释一下 java 中 play framework 2 中的缓存注释是如何工作的吗?我想用他的参数缓存方法的结果;像这样的东西:
@Cache(userId, otherParam)
public static User getUser(int userId, String otherParam){
return a User from dataBase if it isn't in cache.
}
也许有教程可用?
谢谢你的帮助。
有人可以用示例解释一下 java 中 play framework 2 中的缓存注释是如何工作的吗?我想用他的参数缓存方法的结果;像这样的东西:
@Cache(userId, otherParam)
public static User getUser(int userId, String otherParam){
return a User from dataBase if it isn't in cache.
}
也许有教程可用?
谢谢你的帮助。
@Cached
注解不适用于每个方法调用。它仅适用于 Actions,而且,您不能将参数用作缓存键(它只是一个 static String
)。如果您想知道它是如何工作的,请查看play.cache.CachedAction
源代码。
相反,您将不得不使用Cache.get()
, 检查结果是否为空,然后Cache.set()
使用Cache.getOrElse()
aCallable
和如下代码:
public static User getUser(int userId, String otherParam){
return Cache.getOrElse("user-" + userId + "-" + otherParam, new Callable<User>() {
@Override
public User call() throws Exception {
return getUserFromDatabase(userId, otherParam);
}
}, DURATION);
}
构造缓存键时要小心,以避免命名冲突,因为它们在整个应用程序中共享。