我用一种方法缓存一些查询
@Override
@Cacheable(cacheNames = "user-actions")
public UserAction getUserAction(UUID userId) {
...
}
我想用另一种方法清除缓存。例如,如果方法具有相同的签名,则它可以工作
@CacheEvict(cacheNames = "user-actions")
public void evictUserLevel(UUID userId) {
log.info("Cache user-actions has been evicted");
}
但是,如果我不将 userId
传递给将被逐出缓存的方法,或者如果它有多个参数,是否有方法可以逐出缓存?这不起作用:
@CacheEvict(cacheNames = "user-actions")
public void processEvent(UserEvent event, UUID userId) {
...
}
最佳答案
这对我有用
@CacheEvict(cacheNames = "user-events", key = "#root.args[1]")
public void processEvent(UserEvent event, UUID userId) {
...
}
root.args
- 表示方法参数,[1]
- 是参数的索引
关于java - Spring从具有另一个签名的方法中驱逐缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66915800/