gpt4 book ai didi

java - 缓存完整性问题

转载 作者:行者123 更新时间:2023-12-02 07:50:44 25 4
gpt4 key购买 nike

我有一个使用 ehcache 进行缓存的应用程序(但我认为这个问题与框架无关),带有一个方法拦截器,所以基本上如果我标记我的方法来缓存类似这样的东西:

public Object invoke(MethodInvocation mi) throws Throwable {
Object result = cache.get(key);
//key comes from MethodInvocation processing
if (result == null) {
result = mi.proceed();
cache.put(key, result);
}
return result;
}

到目前为止一切顺利。我正在缓存一个返回 Array 的方法,并像这样调用:

List<Object> result = methodWithCaching();
result.add(new Object()); //!

正如你所想象的,标有!的行也会更新缓存实例,而这不是我想要的。

有人能想出一种方法来阻止这种行为而不修改客户端,只修改拦截器吗?

最佳答案

“更新缓存”是什么意思?您是否担心用户可以修改 methodWithCaching() 返回的 List?如果是这样,我建议该方法返回一个不可修改的集合。或者缓存可能会检测到结果是一个集合并用不可修改的包装器包装它。

关于java - 缓存完整性问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2058821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com