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
相关推荐
刀法如飞几秒前
Java数组去重的20种实现方式——指导AI解决不同问题的思路
java·算法·面试
phltxy7 分钟前
告别繁琐URL!Spring Cloud OpenFeign 优雅实现微服务远程调用
spring·spring cloud·微服务
薪火铺子10 分钟前
SpringMVC请求处理流程源码解析(第1篇):请求入口与处理器映射
java·后端·spring
ch.ju10 分钟前
Java程序设计(第3版)第二章——参数(实参 形参)
java
椰猫子11 分钟前
SpringMVC(SpringMVC简介、请求与响应(请求映射路径、请求参数、日期类型参数传递、响应json数据))
java·前端·数据库
海兰14 分钟前
【开篇】Spring AI、OpenClaw 和Hermes
java·人工智能·spring·spring ai
bzmK1DTbd21 分钟前
微服务架构设计:Spring Cloud Gateway与Nacos集成
java·spring·微服务
上弦月-编程23 分钟前
指针编程:高效内存管理核心
java·数据结构·算法
罗超驿23 分钟前
双指针算法经典案例:LeetCode 283. 移动零(Java详解)
java·算法·leetcode
xieliyu.24 分钟前
Java手搓数据结构:栈与队列模拟实现
java·数据结构·学习