我正在使用Spring 3.2和EhCache 2.9。我已经将一个零参数方法按如下方式进行了注释:
@Cacheable(value="myList", key="#result.method.name")
protected List<MyObject> getMyList() {
//db query
//return list of results
}
EhCache 配置:
<cache name="myList"
statistics="true"
maxEntriesLocalHeap="1"
timeToLiveSeconds="3600">
<persistence strategy="none" />
</cache>
我希望将数据库查询结果缓存起来。由于此方法没有参数,因此我选择方法名作为缓存键。
在测试中,每次调用方法时都会访问数据库,我不确定原因。有什么想法吗?
更新
故障排除后,我发现了一些有趣的东西。目前定义缓存的getMyList
方法与调用它的类在同一个类中。该方法基本上调用DAO来查询列表。如果我将getMyList
移动到另一个类中,该类只充当代理,然后将原始调用者更改为调用此新代理,则缓存起作用。我无法解释原因。有任何建议吗?