职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 919|回复: 5

spring cache+ehcache的一个bug

[复制链接]
Jethro 发表于 2011-9-2 11:06 | 显示全部楼层 |阅读模式
用annotation注解ehcache发现了一个问题

当2个方法注解到同一个cache对象中去的时候

如果这2个方法的参数相同那么cache会发生混乱。

至少初步观察的是这个结果。难道ehcache存储的key无视方法名



 楼主| Jethro 发表于 2011-9-2 11:06 | 显示全部楼层
被我找到了。。。

public class DefaultKeyGenerator implements KeyGenerator<Object> {

public Object extract(Method method, Object... params) {
int hashCode = 17;

for (Object object : params) {
hashCode = 31 * hashCode + object.hashCode();
}

return Integer.valueOf(hashCode);
}
}

这个是计算key的方法。居然不把method 计算进去而把params 参数的值计算进去。

这个是为什么??!!!!!!!!!!!!!!!!!!!!!!!!!

既然不计算进去为什么还要把method传进去 浪费表情。

木已 发表于 2011-9-2 11:06 | 显示全部楼层
还有一点个人觉得很不好。

例如:@Cacheable(value = "rankingCache",key="aa")

key按spring的要求需要是Spring Expression Language 表达式

但是作为一个key只要唯一就行了为什么还要限制必须是 spel。限制太死了。

还有上面的DefaultKeyGenerator 绝对算一个bug

已经来了吗 发表于 2011-9-2 11:06 | 显示全部楼层
org.springframework.cache.support.DefaultKeyGenerator

在org.springframework.context-3.1.0.M1.jar 包里面



只学java 发表于 2011-9-2 11:06 | 显示全部楼层
3.1还没用到,可以去报个issue

已经来了吗 发表于 2011-9-2 11:06 | 显示全部楼层
我感到很奇葩啊。spring这么好的一个功能居然没多少人讨论。。。。
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-5-5 21:49 , Processed in 0.136948 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表