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 工作流程。
当我调用我用 @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 工作流程。