具有复杂键的Spring @Cacheable仍然执行

我在Spring(3.1)中使用@Cacheable时有以下内容:

弹簧:

      

Maven的:

   net.sf.ehcache ehcache-core 2.5.3  

要缓存的方法:

 @Cacheable(value="cahceName", key="concat(#param1).concat('-').concat(#param2)") public String cachedMethod(String param1,String param2) 

唉,当我调试代码时,我发现即使param1和param2相同(即不使用cahce),缓存的方法也会被多次调用。

有任何想法吗?

密钥似乎不正确 –

您可能意味着 – @Cacheable(value="cacheName", key="#param1.concat('-').concat(#param2)")

此外,如果在没有调试信息的情况下完成编译,则表达式计算器将无法使用param1,param2参数名称。 相反,您可以使用p0,p1等以这种方式引用它们:

@Cacheable(value="cahceName", key="#p0.concat('-').concat(#p1)")

更新:

我这里有一个单页测试,演示了它是如何工作的 – https://gist.github.com/3315275