@CacheEvict删除不了缓存
时间: 2023-10-01 22:07:45 浏览: 97
@CacheEvict注解是用来删除缓存的。根据引用和引用的内容,当使用@CacheEvict注解删除缓存时,需要确保在删除数据之后同时清理缓存。在代码中,可以通过在deleteUsers方法上添加@CacheEvict注解来实现删除缓存的功能。在该注解中,可以使用key属性指定要删除的缓存数据的键,也可以使用allEntries属性设置是否删除当前缓存组件中的所有缓存数据。同时,可以使用beforeInvocation属性来定义缓存的清除是在方法调用之前还是之后执行。
举例来说,假设有一个名为"users"的缓存,我们希望在执行deleteUsers方法时删除该缓存,可以通过在方法上添加@CacheEvict注解来实现。具体代码如下:
```
@CacheEvict(cacheNames = "users", key = "#id")
public void deleteUsers(Integer id) {
System.out.println("删除用户" + id);
usersMapper.deleteUsersById(id);
}
```
在这个例子中,我们使用了cacheNames属性指定要删除的缓存名称为"users",并且使用了key属性指定要删除的缓存数据的键为传入的id参数。
请注意,在使用@CacheEvict注解时,确保注解所在的方法会被调用,这样才能触发缓存的删除操作。另外,如果方法执行出错,缓存将不会被清除,因此需要注意异常处理。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [BUG - 注解失效 @CacheEvict ,无法清除指定缓存](https://blog.csdn.net/w1047667241/article/details/110393406)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [springboot项目@CacheEvict清除缓存数据](https://blog.csdn.net/weixin_53472653/article/details/122444487)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文