【发布时间】:2015-03-06 17:10:57
【问题描述】:
在 Spring 应用程序中,我们有两个控制器,即 controller1、controller2 和一个服务,即 service1
我想使用方法缓存,为此我已经配置了 spring 缓存。
我在 service1 中使用 @Cacheable(value = "cache1") 缓存名为 method1 的方法,为了删除缓存,我在 service1 中名为 method2 的另一个方法上使用 @CacheEvict(value = "cache1", allEntries = true)。
所以缓存工作正常,但驱逐不能按我的意愿工作。
所以如果我从控制器 1 调用方法 1(可缓存方法),它将缓存并从控制器 1 调用方法 2(cacheEvict 方法),然后它将正确删除/逐出缓存但是当我从控制器 2 调用方法 2(cacheEvict 方法)时,它不会删除/ 驱逐缓存,但我想要这样做。
我想在每次调用该方法时逐出/删除缓存,这与从哪个控制器调用它无关。
这在大多数情况下是必需的,因为控制器 1 用于客户,控制器 2 用于管理员。我们缓存了控制器 1 中使用的方法,并且我们希望在控制器 2 (即管理员)发生任何更新时删除相同的缓存。
【问题讨论】:
-
确保服务只有一个实例,看起来好像有多个实例。
-
@M.Deinum 是一个实例问题,但无法弄清楚如何解决。你能帮帮我吗?
标签: java spring caching spring-cache