我在不同的类中创建了两个方法,并使用@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中定义了上面的缓存。 如果同时调用这两种方法会发生什么?
如果此方法没有参数,那么密钥如何生成?
感谢 哈里什
答案 0 :(得分:1)
这不起作用,不是因为缓存名称相同,而是因为没有arg方法。
Spring Caching's default key generation将最终对两种方法使用相同的密钥,从而导致缓存内部发生冲突。
您有两种选择: