关于责任链中使用guava缓存造成的问题

描述:有两个链,1链有A,B,C,D四个节点   2链有A,B,E,D四个节点

其中在B节点中会组装一个BMap对象,这个对象会放入到guava的缓存和context上下文当中

1.责任链1运行后guava缓存中会有一个BMap对象

2.责任链2运行后会对context中的BMap进行修改,但由于java是副值的引用,故修改2对应context的BMap内容其实修改了guava缓存中的BMap对象

3.责任链1再次运行的时候从guava缓存中获取的就是被责任链2修改过后的BMap

结论:在责任链中,最好不要修改context上下文的内容,若要修改,请重新填装

 

发布了260 篇原创文章 · 获赞 53 · 访问量 125万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览