Spring的cacheEvict

@CacheEvict属性

复制代码
cacheManager:指定缓存管理器的名字
复制代码
value:指定缓存名称

key:指定缓存key

复制代码
condition:指定条件

spring先解析,后执行,也就是只有condition满足条件后才会清除指定的缓存;但清除前都会经过解析

value和cacheManger的区别

重要规则

1 缓存解析顺序

如果定义了多个缓存管理器,spring怎么知道是操作哪个管理器的缓存呢?Spring 按以下顺序确定使用哪个 cacheManager:

  1. @CacheEvict 注解的 cacheManager 属性

  2. 类上 @CacheConfig 的 cacheManager

  3. 容器中标记为 @Primary 的 CacheManager

  4. 容器中唯一的 CacheManager

2 value的命名规则

复制代码
// 好的命名:明确业务含义
value = "user:profile"      // 用户资料
value = "order:list:${#userId}"  // 用户订单列表
value = "product:detail:${#id}"  // 商品详情

// 避免的命名
value = "cache1"           // 无意义
value = "data"             // 太泛泛

3 默认行为

复制代码
// 如果没有指定 cacheManager
@CacheEvict(value = "users")  // 使用默认/主要的 CacheManager

// 如果没有指定 value → ❌ 编译错误!
@CacheEvict(key = "#id")  // 编译错误:缺少 value
相关推荐
苍何1 分钟前
开源微信流 Windows,微信聊天记录,可以直接给 Codex 和 Obsidan 了
后端
代码什么用1 小时前
Spring基础使用
java·后端·spring
代码什么用1 小时前
Spring对IoC的实现
数据库·spring
Su米苏2 小时前
Spring AI 中MCP 与普通 @Tool的区别
java·人工智能·spring
明月_清风2 小时前
Deno 终局来了:从挑战 Node 到被 Cloudflare 收编
前端·后端·node.js
码云数智-园园2 小时前
unique_ptr 还是 shared_ptr?C++ 智能指针选型与内存泄漏实战分析
java·开发语言
老板一杯拿铁2 小时前
Java 异常体系详解:从字节码原理到最佳实践
java
蜗牛互联网2 小时前
Java 17 HttpClient调用文件转写API的超时与失败回退
java·人工智能·后端
禾小西3 小时前
07丨Redis 哨兵机制:主库故障后,如何恢复服务?
java·开发语言·redis
我不是阵雨3 小时前
JDK 21虚拟线程Pinning陷阱:一文拔钉解困
java·开发语言