You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Cache使用@CacheEvict按固定key驱逐缓存报错如何解决?

Spring Cache @CacheEvict 驱逐固定key失败问题修复

问题原因

Spring Cache 注解的key属性默认会以SpEL(Spring 表达式语言)规则解析,你在@CacheEvict中直接填写key = "getAllToday"时,Spring会将其识别为变量名,尝试从缓存表达式上下文根对象CacheExpressionRootObject中查找名为getAllToday的属性,而不是将其直接作为固定字符串key使用,因此抛出属性找不到的异常。

修复方案

如果要指定固定字符串作为缓存key,需要给字符串添加单引号,标记为SpEL字符串字面量,修改后的注解配置如下:

@Caching(
        evict = {
                @CacheEvict(cacheNames = "dishDTOs", key = "'getAllToday'"),
                @CacheEvict(cacheNames = "dishDTOs", key = "#dishId")
        })

修改后getAllToday会被直接识别为key值,和@Cacheable生成的缓存key完全匹配,即可正常完成缓存驱逐。

内容的提问来源于stack exchange,提问作者user16613329

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 22:39:01