【问题标题】:spring with ehcache, cache missing in non-cacheable function calls带有ehcache的spring,不可缓存的函数调用中缺少缓存
【发布时间】:2015-12-26 04:06:08
【问题描述】:

这个问题真的很难用文字描述清楚。 很快,如果直接调用带有@Cacheable 标记的函数, 一切如预期。但是,如果在另一个中调用此 @Cacheable 函数 没有@Cacheable 的函数,缓存命中不符合预期。

请看代码: http://www.devbeacon.com/d/cache1.zip

非常感谢!

【问题讨论】:

    标签: spring-cache


    【解决方案1】:

    documentation is pretty explicit about that

    在代理模式下(默认),只有通过代理传入的外部方法调用会被拦截。这意味着自调用,实际上是目标对象中的一个方法调用目标对象的另一个方法,即使被调用的方法被标记为@Cacheable,也不会在运行时导致实际的缓存——考虑使用aspectj模式这种情况。

    您的内部方法调用完全绕过代理。 query2 也应该有 @Cacheable。如果不想这样,则需要改用 AspectJ 模式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-22
      • 2012-12-12
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 2019-04-07
      相关资源
      最近更新 更多