使用Spring3.1 Cache注解+EHCache遇到的问题
关于Spring3.1 Cache注解的介绍请参看http://hanqunfeng.iteye.com/blog/1158824
?
这里只说一下遇到的问题,web应用,session超时为30分钟,使用Cache注解+EHCache,如下:
??
结果,在登录系统后,如果超过5分钟不访问系统,则会出现异常,
按照这样配置,我原以为,如果5分钟之内不访问应用,则缓存会失效,那么spring就会重新执行原先被缓存的方法,但实际上,方法并没有被重新执行,而是返回了null,貌似spring依旧是从缓存中查找,并且找到了key,只不过value已经是null了。
?
这样就会导致系统出现空指针异常,况且session也尚未超时,
但就算是将闲置时间设置为30分钟以上,用户在下次登录时一样会出现异常,但是第二次登录就又会正常,然后周而复始,貌似,只有当第一次取到null后,spring才会重新执行方法。
?
感觉上,好像ehcache清除缓存后,spring并不知道,因为key依旧可以在spring的cache中找到,但是通过key取值时,spring会从ehcache中查找,由于ehcache已经清除了缓存,所以返回值一定是null,而spring也把这个null当成了被缓存的value返回给系统。
?
使用spring自带的缓存机制没有遇到该问题。
?