我可以使用相同的缓存名称为不同类中的方法使用ehcache进行缓存

时间:2015-06-28 23:25:19

标签: ehcache

我在不同的类中创建了两个方法,并使用@Cacheable注释对它们进行了注释,并给出了相同的缓存名称,如下所示:

class MyClass{
    @Cacheable(value="inScopeCache")
    public Products getProducts() { 
        //reading data from repository
    } 
}

class MyNewClass{
    @Cacheable(value="inScopeCache")
    public NewProducts getProducts() { 
        //reading data from repository..
    } 
}

会起作用吗?如果是的话怎么样? 我已经正确地在spring xml中定义了上面的缓存。 如果同时调用这两种方法会发生什么?

如果此方法没有参数,那么密钥如何生成?

感谢 哈里什

1 个答案:

答案 0 :(得分:1)

这不起作用,不是因为缓存名称相同,而是因为没有arg方法。

Spring Caching's default key generation将最终对两种方法使用相同的密钥,从而导致缓存内部发生冲突。

您有两种选择:

  1. 指定要在每种方法中使用的密钥
  2. 使用不同的缓存