使用ehcache缓存可变对象时的注意事项

背景

使用ehcache时,默认从缓存获取的是对象引用,因此如果对该引用进行任何修改,都会同步到缓存中。

说明

这篇文章说的非常好:ehcache2拾遗之copyOnRead,copyOnWrite

在ehcache的配置中,增加上面的两个属性即可,再从缓存获取对象时,不再是对象引用,而是创建一个深度复制的克隆对象,这样的话就不会对原对象有任何影响。

其他

我之前有一篇介绍 transient 关键字的博文:使用transient关键字解决ehcache序列化错误

在使用 copyOnRead / copyOnWrite 配置,并对属性添加 transient 关键字后,会出现反序列之后的对象丢失该属性的情况。

添加 static 后问题解决,例如:

private transient final static ReciveService reciveSer = Ioc.get(ReciveService.class);

 

posted @ 2021-08-27 16:40  网无忌  阅读(221)  评论(0编辑  收藏  举报