使用ehcache缓存可变对象时的注意事项
背景
使用ehcache时,默认从缓存获取的是对象引用,因此如果对该引用进行任何修改,都会同步到缓存中。
说明
这篇文章说的非常好:ehcache2拾遗之copyOnRead,copyOnWrite
在ehcache的配置中,增加上面的两个属性即可,再从缓存获取对象时,不再是对象引用,而是创建一个深度复制的克隆对象,这样的话就不会对原对象有任何影响。
其他
我之前有一篇介绍 transient 关键字的博文:使用transient关键字解决ehcache序列化错误
在使用 copyOnRead / copyOnWrite 配置,并对属性添加 transient 关键字后,会出现反序列之后的对象丢失该属性的情况。
添加 static 后问题解决,例如:
private transient final static ReciveService reciveSer = Ioc.get(ReciveService.class);
版权声明: 本文为博主 网无忌 原创文章,欢迎转载,但请务必标注原文链接。