【发布时间】:2015-08-19 10:32:57
【问题描述】:
我正在尝试在我的 spring 应用程序中使用 google guava 缓存,但结果永远不会缓存。
这是我的步骤:
在配置文件中:
@EnableCaching
@Configuration
public class myConfiguration {
@Bean(name = "CacheManager")
public CacheManager cacheManager() {
return new GuavaCacheManager("MyCache");
}
}
在课堂上我想使用缓存:
public class MyClass extends MyBaseClass {
@Cacheable(value = "MyCache")
public Integer get(String key) {
System.out.println("cache not working");
return 1;
}
}
然后当我打电话时:
MyClass m = new MyClass();
m.get("testKey");
m.get("testKey");
m.get("testKey");
每次都进入函数而不使用缓存: 控制台:
cache not working
cache not working
cache not working
有人知道我缺少什么或如何调试吗?
【问题讨论】:
-
你在你的 spring 配置中添加了一个 CacheBuilder 吗?
-
为什么它应该起作用?您正在自己创建该类的新实例,而您应该使用 spring 配置(并因此代理)实例以进行缓存工作。
-
@m。你能解释一下吗?你是什么意思弹簧配置实例?
-
Spring 使用 AOP 来应用缓存,但是您使用的是自己的
MyClass实例,它没有被 spring 代理。无论您要对其进行多少配置,它都行不通。将MyClass配置为spring bean,从上下文中获取一个/实例并使用它而不是您自己的实例
标签: java spring caching google-guava-cache