当我调用我用@Cacheable("myTest")
注释的方法时,我知道缓存没有被使用,因为我在方法内部进行了打印,如果使用缓存则不应该打印。
在日志中,我知道缓存正在初始化
DEBUG net.sf.ehcache.store.MemoryStore - Initialized net.sf.ehcache.store.MemoryStore for myTest
我应该提到调用该方法的方法是常规Java new MyCacheObject().cacheMethod("key");
而不是使用Spring bean。缓存是否会以这种方式工作?
答案 0 :(得分:1)
我应该提到调用该方法的方法是常规Java
new MyCacheObject().cacheMethod("key");
而不是使用Spring bean。 缓存是否会以这种方式工作?
Spring应该能够管理您的对象生命周期,以便创建添加缓存行为的必需代理。所以,这种方法不起作用。如果你不能让spring为你创建bean,唯一的选择是在cacheMethod
中手动执行缓存检查并实现典型的 get-if-not-found-then-proceed - 并且最终工作流程。