Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >SpringBoot——关于Cache缓存获取值后修改的问题「建议收藏」

SpringBoot——关于Cache缓存获取值后修改的问题「建议收藏」

作者头像
全栈程序员站长
发布于 2022-08-04 11:16:57
发布于 2022-08-04 11:16:57
1.1K00
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

使用Spring缓存时遇到一个问题,问题如下:

在使用@Cacheable注解获取缓存中的值之后,将获取到的值进行修改,之后再次通过缓存获取该对象时,发现缓存中的值也被修改了。

来看一下代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 @Cacheable(cacheNames = "userCache", key = "#key")
    public User getCache(String key) {
        //获取最新数据
        return getNewData(key);
    }

上边的代码意思就是:通过参数key获取缓存中的User对象,如果缓存中没有就会执行代码getNewData(key);进行返回并进行缓存。

在调用该方法之后,将返回的User对象进行修改之后,再次通过缓存获取User对象,此时获得的对象就是修改之后的对象。

那么可以看出缓存方法返回的对象就是保存在缓存内部的对象,而不是一个缓存对象的副本,这与博主之前所认为的是不一样的,所以大家在使用缓存的时候一定要注意,不要掉进这个坑里!

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/106452.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年4月2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SpringBoot——解决Cache缓存同类中调用失败问题「建议收藏」
今天遇到了一个问题,使用缓存的情况下,如果在缓存服务类方法中调用缓存的方法会调用失败,就是this.缓存方法名,这样使用就不会从缓存中获取数据,而是直接调用缓存方法,错误示例代码如下:
全栈程序员站长
2022/08/04
6770
SpringBoot——解决Cache缓存同类中调用失败问题「建议收藏」
SpringBoot——Cache缓存初探
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/106466.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/04
2270
SpringBoot——Cache缓存初探
springcache清除缓存_什么叫做缓存数据
从 spring3 开始,spring 开始支持缓存组件,并提供了一系列非常方便的注解。
全栈程序员站长
2022/09/22
3K0
Spring整合Ehcache管理缓存
静默虚空
2018/01/05
1.8K0
springboot使用cache缓存
Spring从3.1开始定义了org.springframework.cache.Cache和org.springframework.cache.CacheManager接口来统一不同的缓存技术;并支持使用JCache(JSR-107)注解简化我们开发;
吟风者
2019/07/25
9020
芋道 Spring Boot 缓存 Cache 入门
在系统访问量越来越大之后,往往最先出现瓶颈的往往是数据库。而为了减少数据库的压力,我们可以选择让产品砍掉消耗数据库性能的需求。当然,我们也可以选择如下方式优化:
芋道源码
2020/02/20
3K0
芋道 Spring Boot 缓存 Cache 入门
玩转 EhCache 缓存框架
EhCache 从 Hibernate 发展而来,是一个纯Java的进程内缓存框架,具有快速、精干等特点。Ehcache是一种广泛使用的开源Java分布式缓存。主要面向通用缓存,Java EE和轻量级容器。它具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常处理程序,一个gzip缓存servlet过滤器,支持REST和SOAP api等特点。
微观技术
2021/04/19
6400
玩转 EhCache 缓存框架
Spring cache简单使用guava cache
Spring cache简单使用 前言 spring有一套和各种缓存的集成方式。类似于sl4j,你可以选择log框架实现,也一样可以实现缓存实现,比如ehcache,guava cache. [TOC] 什么时候用缓存 首先,缓存是为了省略消耗时间的步骤,比如io。当我需要从数据库查询的数据几乎没有变化,或者变化很少的时候,我就没必要每次都去数据库里拿数据了。大可以放到本地,直接取出来就可以了。这时候需要注意的是数据一致性问题,缓存的数据是否被更改了,数据是否有效。 我的项目是分布式部署的,但还没有搭建分布
Ryan-Miao
2018/03/13
4.1K0
SpringBoot 笔记 ( 五 ):缓存
SpringBoot 笔记 (五): 缓存 1.JSR107介绍 1.核心概念 JSR107这个规范有五个核心概念分别是: CacheProvider 它用来管理缓存的Manager也就是用来创建,删除,管理,配置CacheManager 的 CacheManager 是用来管理各个缓存,创建,删除,管理,配置Cache的 Cache 是各个具体的缓存组件 Entry 是缓存中具体的一个缓存项 Expire 缓存的过期时间 2.导入包 javax.cache.cache-api javax.cache.c
lwen
2018/06/19
1.5K0
Spring cache 理解
今天在做项目的时候,有个用户的名字怎么刷新都拿不到,因为公司使用的是 微服务,而且各个服务端之间有各自的缓存 redis,因此,查了3个微服务,而且把相关的 redis key 值清空掉,依旧是没有效果,最后有个眼尖的同事发现我这边的代码里有 @Cacheable 这货存在,应该是别的同事优化接口的时候加上的,导致没有处理 Spring 缓存,既然看到了这个 API ,当然要理解一番,要不浪费这么多时间呢。
haoming1100
2019/03/15
6630
聊聊Spring Cache的缓存抽象与JSR107缓存抽象JCache,并使用API方式使用Spring Cache【享学Spring】
缓存(Cache)是计算机领域一个极其重要的概念,它是提高硬件(比如CPU、显卡)、软件运行效率非常重要且有效的一个手段,它的最大特点就一个字:速度非常快。
YourBatman
2019/09/03
1.7K0
聊聊Spring Cache的缓存抽象与JSR107缓存抽象JCache,并使用API方式使用Spring Cache【享学Spring】
Caffeine Cache~高性能 Java 本地缓存之王
前面刚说到Guava Cache,他的优点是封装了get,put操作;提供线程安全的缓存操作;提供过期策略;提供回收策略;缓存监控。当缓存的数据超过最大值时,使用LRU算法替换。这一篇我们将要谈到一个新的本地缓存框架:Caffeine Cache。它也是站在巨人的肩膀上-Guava Cache,借着他的思想优化了算法发展而来。
芋道源码
2020/08/24
4K0
Caffeine Cache~高性能 Java 本地缓存之王
重学SpringBoot系列之Spring cache详解
使用缓存是一个很“高性价比”的性能优化方式,尤其是对于有大量重复查询的程序来说。通常来说,在WEB后端应用程序来说,耗时比较大的往往有两个地方:一个是查数据库,一个是调用其它服务的API(因为其它服务最终也要去做查数据库等耗时操作)。
大忽悠爱学习
2021/12/07
1.6K0
重学SpringBoot系列之Spring cache详解
扩展spring cache 支持缓存多租户及其自动过期
Spring 支持基于注释(annotation)的缓存(cache)技术,它本质上不是一个具体的缓存实现方案(例如 EHCache 或者 OSCache),而是一个对缓存使用的抽象,通过在既有代码中添加少量它定义的各种 annotation,即能够达到缓存方法的返回对象的效果。
冷冷
2019/03/25
1.4K0
SpringBoot Cache 深入
这上一篇文章中我们熟悉了SpringBoot Cache的基本使用,接下来我们看下它的执行流程
tanoak
2018/07/13
4490
SpringBoot Cache 深入
springboot cache 基本使用
为什么使用缓存? 比如一个复杂的计算结果,一次数据库访问取得的数据等耗时耗资源的数据就能放入缓存,目的就是为了节省开销,我们要用有限的资源(CPU,内存,带宽等等)尽量做最多的事情。
smallmayi
2022/05/12
5600
springboot cache 基本使用
【SpringCache】快速入门 通俗易懂
Spring Cache 是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。
陶然同学
2023/12/09
2180
【SpringCache】快速入门 通俗易懂
springboot cache 缓存
使用springboot的cache功能: 1.在启动类上加注解@enableCaching,启用缓存 2.在需要缓存的方法上加入对应的注解,具体如下: /* * 1.@Cacheable(cacheNames = "car", key = "#name") * 将方法的返回值 保存 在缓存“car”中,键由key指定,值是方法的返回值 * 2.@CachePut(cacheNames = "car", key = "#car.name") * 使用方法的返回值 更新 缓存“car”中,键为key的
yawn
2018/03/14
8330
Spring Cache框架,实现了基于注解的缓存功能。
在spring boot项目中,使用缓存技术只需在项目中导入相关缓存技术的依赖包,并在启动类上使用@EnableCaching开启缓存支持即可。
.29.
2023/11/26
3810
Spring Cache框架,实现了基于注解的缓存功能。
Spring 全家桶之 Spring Boot 2.6.4( Ⅰ )- Caching(Part B)
自动配置类使用@Import注解导入CacheConfigurationImportSelector类
RiemannHypothesis
2022/09/26
3050
Spring 全家桶之 Spring Boot 2.6.4( Ⅰ )- Caching(Part B)
相关推荐
SpringBoot——解决Cache缓存同类中调用失败问题「建议收藏」
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文