尝试从缓存管理器取回 Guava 缓存时遇到问题,而是获得了 Spring Cache。
这是我的 SpringConfig 文件中的 bean:
@Bean
public CacheManager cacheManager() {
ConcurrentMapCacheManager cacheManager = new ConcurrentMapCacheManager() {
@Override
protected Cache createConcurrentMapCache(final String name) {
return new ConcurrentMapCache(name, CacheBuilder.newBuilder().expireAfterWrite(1440, TimeUnit.MINUTES)
.maximumSize(100).recordStats().build().asMap(), false); }
};
return cacheManager;
}
然后我就可以使用 @Cacheable 了:
@Cacheable(value = "myCache")
public void myCacheMethod(String key){
// call a web service
}
一切正常,但我无法获取 CacheBuilder 创建的缓存 Guava 对象以调用 stats() 方法。
这就是我获取缓存的方式:
Cache myCache = cacheManager.getCache("myCache");
ValueWrapper wrapper = myCache.get("key");
WebServiceType myCachedObject= (WebServiceType) wrapper.get();
最后一个缓存是 Spring 缓存,如果将其转换为 Guava 缓存,则会出现错误。
这可能吗 ?还是我做错了什么?