@Cacheable 失效
时间: 2023-08-25 16:11:38 浏览: 112
对Cache失效问题的研究.
4星 · 用户满意度95%
根据引用和,@Cacheable注解失效的可能原因是由于它是通过AOP代理实现的,当缓存命中时,其它注解无法正常切入和执行,包括@Before注解。而当缓存未命中时,其它注解可以正常工作。另外,由于代理是在类的内部创建的,所以类内部方法调用类内部的缓存方法时不会经过代理,导致缓存不能正常创建。这就意味着每次都需要访问数据库。
另外,根据引用,还有一种情况是使用了weakKeys()配置,导致缓存失效。当调用缓存方法时,缓存实际上已经注册到缓存管理器的Map中,但是在下一次调用时却无法命中缓存。这可能是因为缓存管理器配置了weakKeys(),导致每次key无法匹配成功,因为它使用了==而不是equals进行key的匹配。
综上所述,@Cacheable失效的原因可能是因为AOP代理的限制(对于缓存命中的情况)和weakKeys()配置(对于缓存未命中的情况)。解决方法包括避免在缓存方法中使用其它注解,或者调整缓存管理器的配置以移除weakKeys()。
阅读全文