【缓存】Spring全家桶中@CacheEvict无效情况共有以下几种

Spring全家桶中@CacheEvict无效情况共有以下几种

  • 一、背景介绍
  • 二、原因分析
  • 三、解决方案

一、背景介绍

SpringBoot中使用@Cacheable注解缓存数据,使用@CacheEvict注解删除缓存。但是在项目使用过程中,发现使用@CacheEvict注解删除缓存无效。

拓展:@CacheEvict 就是一个触发器,在每次调用被它注解的方法时,就会触发删除它指定的缓存的动作。跟 @Cacheable 和 @CachePut 一样,@CacheEvict 也要求指定一个或多个缓存,也指定自定义的缓存解析器和 key 生成器,也支持指定条件(condition 参数)。

@CacheEvict 是用来清除缓存的,有以下属性:
value:缓存位置名称,不能为空。
key:缓存的key,默认为空。
condition:触发条件,只有满足条件的情况才会清除缓存,默认为空,支持SpEL。
allEntries:true表示清除value中的全部缓存,默认为false。

二、原因分析

经过网络搜索与总结,Spring全家桶中@CacheEvict无效的原因有以下几种情况:

  • 1、使用@CacheEvict注解的方法必须是Controller层直接调用,Service里间接调用不生效。(我本次出现无效的原因)
  • 2、key值跟你查询方法的key值不统一,所以导致缓存并没有清除。
  • 3、把@CacheEvict的方法和@Cacheable的方法放到一个java文件中写,如果这两个注解在两个java文件的话,会导致@CacheEvict失效。
  • 4、返回值必须设置为void才会生效。网络上有很多同学有返回值的使用@CacheEvict这个注解也是无效的。

@CacheEvict annotation
It is important to note that void methods can be used with @CacheEvict

  • 5、@CacheEvict必须作用在走代理的方法上。同原因1。

在使用Spring @CacheEvict注解的时候,要注意,如果类A的方法function1()被标注了 @CacheEvict注解,那么当类A的其他方法,例如:function2(),去直接调用function1()的时候, @CacheEvict是不起作用的,原因是 @CacheEvict是基于Spring AOP代理类,function2()属于内部方法,直接调用function1()时,是不走代理的。

@CacheEvict不生效的代码示例如下:
在这里插入图片描述

三、解决方案

知道原因之后,就知道怎么解决了,由于以上有几种原因,针对每种原因的解决方案不同,各自对应解决即可。

以下为本文中出现问题的解决方案

在这里插入图片描述
本文完结!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/112195.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

猪八戒、程序员客栈、码市哪个更好用?

最近有很多程序员伙伴在用接单平台线上兼职,问题也来了:到底哪个更好用嘞? 选取了几个问的比较多的:猪八戒、程序员客栈、码市。进行了一下简单的比较。 优点: 猪八戒 第一,猪八戒的名气是毋庸置疑的。无论是它成立至今的时间…

NB-IOT的粮库挡粮门异动监测装置

一种基于NBIOT的粮库挡粮门异动监测装置,包括若干个NBIOT开门监测装置,物联网后台管理系统,NBIOT低功耗广域网络和用户访问终端;各个NBIOT开门监测装置通过NBIOT低功耗广域网络与物联网后台管理系统连接,物联网后台管理系统与用户访问终端连接.NBIOT开门监测装置能够对粮库挡粮…

索引创建的原则

索引的创建是数据库优化中非常重要的一部分,正确创建索引可以大大提高查询效率。以下是一些创建索引时需要考虑的原则: 根据查询频率创建索引: 频繁用于检索的列: 那些频繁用于查询的列或经常出现在 WHERE、JOIN、ORDER BY 和 GR…

企业如何在自媒体平台推广

自媒体是企业宣传品牌的平台之一,在自媒体平台上企业能够较为自由的决定文案内容发布时间,同时后台也会有专门的数据分析帮助企业了解每一次推广效果,成本可控、数据可查、效果可追踪,还能与用户或者潜在用户互动,进行…

放射影像科PACS系统源码

PACS系统是医院影像科室中应用的一种系统,主要用于获取、传输、存档和处理医学影像。它通过各种接口,如模拟、DICOM和网络,以数字化的方式将各种医学影像,如核磁共振、CT扫描、超声波等保存起来,并在需要时能够快速调取…

从用户角度出发,如何优化大数据可视化体验|北京蓝蓝UI设计公司

作者:蓝蓝设计-鹤鹤 大数据已经成为人们探索世界的新工具。但是,对于普通用户而言,大数据往往比较抽象和难以理解,因此,大数据可视化作为一种非常有效的工具工具被广泛应用。然而,在实际应用中&#xff0c…

前端如何不变形的渲染图片大小和图片上的内容

在做前端项目时可能经常会页面图片大小变形或者压缩的情况,一般情况就是height给100%,width给auto就可以了满足大部分使用情况了。有时候需要做一些比较复杂的功能,比如需要在图片上增加锚点,而且图片在适配各种屏幕大小时&#x…

el-table动态增加列、行数据,俩种方法实现按需选择

需求: 表格数据过多的时候,需要实现动态选择数据的功能,有俩种方法可以按需选择,解决了表格动态选择时闪屏数据抖动问题。 注意,这个添加数据是tableData原本就有的,我做的这个操作类似就是折叠选择展示原有…

使用Docker Compose部署Spug并实现内网穿透远程访问

文章目录 前言1. Docker安装Spug2 . 本地访问测试3. Linux 安装cpolar4. 配置Spug公网访问地址5. 公网远程访问Spug管理界面6. 固定Spug公网地址 前言 Spug 面向中小型企业设计的轻量级无 Agent 的自动化运维平台,整合了主机管理、主机批量执行、主机在线终端、文件…

产品经理一定要学会的原型交互规范设计

一、主级按钮 序号1、序号2:主级按钮 一个按钮区最多一个主级按钮,也可以没有 二、线框按钮 序号3:如果不是非常为了突出“完成”、“推荐”的操作,可以多采用线框按钮 三、红色按钮 序号4:红色按钮不需要选中颜色这…

音视频rtsp rtmp gb28181在浏览器上的按需拉流

按需拉流是从客户视角来看待音视频的产品功能,直观,好用,为啥hls flv大行其道也是这个原因,不过上述存在的问题是延迟没法降到实时毫秒级延迟,也不能随心所欲的控制。通过一段时间的努力,结合自己闭环技术栈…

没搞错吧?阿里云99元一年服务器老用户可以买!

阿里云老用户优惠服务器99元/年,谁再说阿里云不好我给谁急,云服务器ECS配置为经济型e实例,2核CPU、2G内存、3M固定带宽、40G ESSD entry 系统盘,老用户优惠价99元一年,老用户可以买,当然新用户也可以买&…

[推荐]SpringBoot,邮件发送附件含Excel文件(含源码)。

在阅读本文前,可以先阅读我的上一篇文章: SpringBoot,使用JavaMailSender发送邮件(含源码)。 ,本文使用的代码案例涉及到的 jar包、application.properties配置与它相同。 先看一下效果。 图一 图二 在下方代码案例中,…

【电路笔记】-正弦波形

正弦波 文章目录 正弦波1、概述2、波形产生3、总结 在 19 世纪末的 10 年间,许多技术成就使得交流电的使用得以扩展,并克服了直流电向公众供电的局限性。 1882 年,法国发明了变压器,它简化了交流电的分配,正如我们将在…

数字人小灿:始于火山语音,发于 B 端百业

火爆的数字人市场又有新消息来袭:火山语音的数字人小灿来了! 数字人小灿首曝视频 今年以来,在生成式AI浪潮的助推下,大量企业争相布局数字人赛道。市场之所以如此火热,是因为AI数字人已被视为人工智能时代智能交互的入…

gcc/g++使用格式+各种选项,预处理/编译(分析树,编译优化,生成目标代码)/汇编/链接过程(函数库,动态链接)

目录 gcc/g--编译器 介绍 使用格式 通用选项 编译选项 链接选项 程序编译过程 预处理(宏替换) 编译 (生成汇编) 分析树(parse tree) 编译优化 删除死代码 寄存器分配和调度 强度削弱 内联函数 生成目标代码 汇编 (生成二进制代码) 链接(生成可执行文件) 函…

相册里的视频怎么提取音频?帮你整理了几个必备的!

有的时候视频中的音频包含重要信息,如对话、旁白、音乐等。提取音频不仅可以节省存储空间,还方便对这些信息进行单独处理和利用。那么如何提取音频呢?下面介绍了3种方法~ 方法一:直接使用手机相册自带功能 1、打开手机相册&#…

用二维码搭建设备巡检系统,轻松实现扫码巡检和数字化台账

针对设备状态不透明、纸质记录效率低、故障报修不及时等设备点巡检的常见问题,可以在草料二维码上自主搭建涵盖点检、巡检、报修、维修、保养等功能的管理系统,无需安装APP,微信扫码就能查看设备档案、用表单替代纸质检查表。 譬如“台州沿海…

【Javascript】Javascript高级程序设计:js 事件 随手笔记

目录 一、事件概述1.1 html 与 js1.2 事件流1.3 DOM 事件流 二、事件处理程序2.1 html 事件处理程序2.2 dom0 级事件处理程序2.3 dom2 级事件处理程序2.4 IE 事件处理程序 三、事件对象四、事件类型4.1 概述4.2 UI 事件4.3 焦点事件4.4 鼠标与滚轮事件4.5 键盘与文本事件4.6 额…

食堂系统登录报错

因为数据库没有任何用户数据,所以会报错,需要添加admin用户 D:\env\jdk1.8.0_341\bin\java.exe -XX:TieredStopAtLevel1 -noverify -Dspring.output.ansi.enabledalways -Dcom.sun.management.jmxremote -Dspring.jmx.enabledtrue -Dspring.liveBeansVie…