我一直在尝试将 SpringCache 添加到我的一项 Spring 托管服务中。我使用 STS 作为我的开发 IDE。
这是我所做的:
安装 springcache 1.3.1 插件
向 Config.groovy 添加缓存配置:
grails.spring.disable.aspectj.autoweaving = true springcache { enabled = true defaults { eternal = false diskPersistent = false } caches { tripCache { memoryStoreEvictionPolicy = "LRU" } } }
在服务中我的测试方法上方添加
@Cacheable
注释如下:int counter = 0 @Cacheable("testCache") String testInc(String x) { return (++counter).toString() }
现在,我从控制器调用此方法,如下所示:
def testDashboard() { [data:testService.testInc("1")] }
并且testInc()
总是返回一个新值,即连续调用返回 1、2、3 等,这让我认为缓存不起作用。我错过了什么并且没有正确打开缓存吗?
我试图查看缓存是否正常工作,我挂钩了 ehcache-2.4.6 的源代码并在 CachingAspect 的 invokeCachedMethod 中设置断点,但是当我运行我的应用程序时,上述方法似乎没有被执行。
我还尝试在缓存中查看“1”的值,看起来它为空,即键“1”没有存储在缓存中。我在控制器测试方法中添加了以下两行:
Ehcache c = springcacheService.getOrCreateCache("testCache")
String x = c.get("1")
请帮忙!