9

在阅读 Spring 3.1 中的新缓存抽象时,我想将此功能应用到我的项目中。

我可以缓存对没有参数的方法的调用吗?

@Cacheable("xCache")
public List<X> loadAllX() {
    ...
}

链接的博客文章指出

使用方法参数作为键执行缓存查找

所以应该不可能缓存这个方法,对吧?

简短的回答:是的,没有任何参数的方法将像任何其他方法一样被缓存。我想该方法的缓存中只有一个条目。

4

1 回答 1

10

您可以通过使用“缓存 SpEL 可用元数据”来覆盖此行为,如下所述:

http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/cache.html#cache-spel-context

在您的示例中,您可以指定以下内容:

@Cacheable(value = "xCache", key = "#root.methodName") 
public List<X> loadAllX() { 
    ... 
} 

这将使用键“loadAllX”缓存“xCache”中的 X 列表

于 2012-06-24T16:40:50.280 回答