大家好,又见面了,我是你们的朋友全栈君。
使用Spring缓存时遇到一个问题,问题如下:
在使用@Cacheable注解获取缓存中的值之后,将获取到的值进行修改,之后再次通过缓存获取该对象时,发现缓存中的值也被修改了。
来看一下代码:
@Cacheable(cacheNames = "userCache", key = "#key")
public User getCache(String key) {
//获取最新数据
return getNewData(key);
}
上边的代码意思就是:通过参数key获取缓存中的User对象,如果缓存中没有就会执行代码getNewData(key);进行返回并进行缓存。
在调用该方法之后,将返回的User对象进行修改之后,再次通过缓存获取User对象,此时获得的对象就是修改之后的对象。
那么可以看出缓存方法返回的对象就是保存在缓存内部的对象,而不是一个缓存对象的副本,这与博主之前所认为的是不一样的,所以大家在使用缓存的时候一定要注意,不要掉进这个坑里!
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/106452.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...