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
相关推荐
名字还没想好☜15 小时前
Go context.AfterFunc 实战(Go 1.21):context 一取消就自动跑清理,告别手写 goroutine 监听 Done
后端·golang·go
鹿角片ljp15 小时前
KV Cache 解析
java·算法
captain37615 小时前
网络原理(9)-数据链路层
java·网络协议·java-ee
惊讶的猫15 小时前
意图识别置信度和检索重排的分数
java
明月_清风15 小时前
为什么最近开始关注 JEV?几个实战案例告诉你答案
人工智能·后端
caoerzhong16 小时前
仓库管理数字化趋势解读:JeeWMS 开源 Java WMS 视角下的五个演进方向
java·开源
GetcharZp16 小时前
5 分钟拥有自己的 S3:RustFS 上手(MinIO 的 Rust 替代,Apache 2.0 可商用)
后端
程序员JerrySUN16 小时前
Jetson Edge AI 实战01:Nano、Xavier、Orin 怎么选?Jetson 硬件选型详解【视频讲解】
java·数据库·redis·安全·mybatis
杨杨杨大侠17 小时前
RAG 到底是怎么工作的?从用户提问到模型回答的完整链路
spring·openai·ai编程