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

Har*_*007 5 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..
    } 
}
Run Code Online (Sandbox Code Playgroud)

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

由于此方法没有参数,因此如何生成密钥?

谢谢哈里什

Lou*_*met 4

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

Spring Caching 的默认密钥生成最终将在两种方法中使用相同的密钥,从而导致缓存内部发生冲突。

您有两个选择:

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