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
相关推荐
码农BookSea9 分钟前
ReAct:让大模型学会边想边做
后端·ai编程
清心歌18 分钟前
CopyOnWriteArrayList 实现原理
java·开发语言
码农BookSea19 分钟前
10分钟掌握 JSON-RPC 协议,面试加分、设计不踩坑
后端
Java成神之路-39 分钟前
通俗易懂理解 Spring MVC 拦截器:概念、流程与简单实现(Spring系列16)
java·spring·mvc
zhanghongbin0140 分钟前
AI 采集器:Claude Code、OpenAI、LiteLLM 监控
java·前端·人工智能
计算机毕设vx_bysj686942 分钟前
【免费领源码】77196基于java的手机银行app管理系统的设计与实现 计算机毕业设计项目推荐上万套实战教程JAVA,node.js,C++、python、大屏数据可视化
java·mysql·智能手机·课程设计
忘梓.43 分钟前
墨色规则与血色节点:C++红黑树设计与实现探秘
java·开发语言·c++
hhh3u3u3u43 分钟前
Visual C++ 6.0中文版安装包下载教程及win11安装教程
java·c语言·开发语言·c++·python·c#·vc-1
凤年徐1 小时前
C++手撕红黑树:从0到200行,拿下STL map底层核心
c++·后端·算法
IT_陈寒1 小时前
Python的列表推导式里藏了个坑,差点让我加班到凌晨
前端·人工智能·后端