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 分钟前
【项目实战】基于protobuf的发布订阅式消息队列(1)—— 准备工作
java·大数据·开发语言
ZHOUPUYU3 分钟前
PHP性能分析与调优:从定位瓶颈到实战优化
开发语言·后端·html·php
吴声子夜歌5 分钟前
JavaScript——数组
java·javascript·算法
稻草猫.8 分钟前
MyBatis-Plus高效开发全攻略
java·数据库·后端·spring·java-ee·mybatis·mybatis-plus
lars_lhuan14 分钟前
Go atomic
开发语言·后端·golang
季明洵18 分钟前
回溯介绍及实战
java·数据结构·算法·leetcode·回溯
人道领域20 分钟前
Day | 09 【苍穹外卖:订单售后业务】
java·数据库·后端
码农的小菜园28 分钟前
Java线程池学习笔记
java·笔记·学习
清汤饺子33 分钟前
搞懂 Cursor 后,我一行代码都不敲了《实战篇》
前端·javascript·后端
hongtianzai42 分钟前
Laravel8.x核心特性全解析
java·c语言·开发语言·golang·php