1
这个问题很难在文本中清楚地描述。不久之后,如果直接调用标有@Cacheable的函数,则所有这一切都如预期的那样。但是,如果在不使用@Cacheable的情况下在另一个 函数中调用此@Cacheable函数,则缓存命中不符合预期。弹簧与ehcache,缓存不可缓存函数调用
请参阅代码: http://www.devbeacon.com/d/cache1.zip
非常感谢您!
这个问题很难在文本中清楚地描述。不久之后,如果直接调用标有@Cacheable的函数,则所有这一切都如预期的那样。但是,如果在不使用@Cacheable的情况下在另一个 函数中调用此@Cacheable函数,则缓存命中不符合预期。弹簧与ehcache,缓存不可缓存函数调用
请参阅代码: http://www.devbeacon.com/d/cache1.zip
非常感谢您!
的documentation is pretty explicit about that
在代理模式(这是默认值),只有外部方法调用通过代理来在被截获。这意味着,即使被调用的方法标记为@Cacheable,实际上,调用目标对象内的方法调用目标对象的另一个方法也不会导致实际的缓存 - 考虑将aspectj模式用于这个案例。
您的内部方法调用完全绕过代理。 query2
也应该有@Cacheable
。如果你不想这样做,你需要使用AspectJ模式。
我真的忽略了这个重要的一点,非常感谢! – chenzero