java - Spring Cacheable返回对象的副本
问题描述
我有一个返回某个类的对象的缓存方法。我的应用程序是多线程的。当一个线程获取缓存对象并对其进行处理时,另一个线程也可以获取并修改该对象,并且第一个线程有问题。
@Cacheable(value="MyCache")
Script parse(String scriptText) {
return new MyObject(scriptText);
}
如何配置它该方法返回缓存对象的副本而不是相同的对象。或者在请求缓存值时如何序列化方法结果和反序列化。
我正在使用带有 Ehcache 的 Spring Boot。
解决方案
如果您删除可缓存注释,您将始终获得一个新对象。是否有迫切的理由首先缓存对象?通常构造函数很便宜。缓存是否可能是过早的优化?
推荐阅读
- xamarin - 如何在 Xamarin.Mac 中处理 Unix 信号?
- r - 在 R 中有没有一种方法可以绘制篮球比赛的主场和客场得分数据,以及 3D 图中的密度?
- ios - 自动调整 UITableViewCell 的大小不明确的 UILabel 高度
- git - 'gh' 无法识别... - 尝试从命令提示符创建 GitHub 存储库时出错
- yarnpkg - 使用 Yarn 2 (Berry) 在 Docker 镜像中打包应用程序
- python - 在 Windows 中使用 shutil.make_archive 会导致 OSError
- database - 当按主键以外的某些字段排序时,B+ 树实际上是如何工作的?
- pytorch - 如果图像的颜色格式是 BGR 而不是 RGB,会影响 NN 训练的准确性吗?
- mongodb - 在 MongoDB 中定义具有相似结构的集合的最佳方法
- python - 错误“405 方法不允许”快速 API PUT 方法