0

尝试从缓存管理器取回 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 缓存,则会出现错误。

这可能吗 ?还是我做错了什么?

4

0 回答 0