@CacheEvict属性
cacheManager:指定缓存管理器的名字
value:指定缓存名称
key:指定缓存key
condition:指定条件
spring先解析,后执行,也就是只有condition满足条件后才会清除指定的缓存;但清除前都会经过解析
value和cacheManger的区别


重要规则
1 缓存解析顺序
如果定义了多个缓存管理器,spring怎么知道是操作哪个管理器的缓存呢?Spring 按以下顺序确定使用哪个 cacheManager:
-
@CacheEvict 注解的 cacheManager 属性
-
类上 @CacheConfig 的 cacheManager
-
容器中标记为 @Primary 的 CacheManager
-
容器中唯一的 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