Spring 使用 ehcache - @Cacheable 方法不缓存

Spring with ehcache - @Cacheable method does not cache

当我调用我用 @Cacheable("myTest") 注释的方法时,我知道缓存没有被使用,因为我在方法内部进行了打印,如果使用了缓存,则不应打印它。

在日志中,我知道正在初始化缓存

DEBUG net.sf.ehcache.store.MemoryStore - Initialized net.sf.ehcache.store.MemoryStore for myTest

我应该提到调用方法的方式是常规 Java new MyCacheObject().cacheMethod("key"); 而不是使用 Spring bean。缓存会这样工作吗?

I should mention the way to call the method is regular Java new MyCacheObject().cacheMethod("key"); instead of using the Spring bean. Will the cache work in this way?

Spring 应该能够管理您的对象生命周期,以便创建添加缓存行为所需的代理。所以,这种方法行不通。如果您不能让 spring 为您创建 bean,唯一的选择是在 cacheMethod 中手动进行缓存检查并实现典型的 get-if-not-found -then-proceed-and-put-eventually 工作流程。