キャッシュ マネージャーから 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
}
すべて正常に動作しますが、stats() メソッドを呼び出すために CacheBuilder によって作成されたキャッシュ Guava オブジェクトを取得できません。
これは私がキャッシュを取得する方法です:
Cache myCache = cacheManager.getCache("myCache");
ValueWrapper wrapper = myCache.get("key");
WebServiceType myCachedObject= (WebServiceType) wrapper.get();
最後のキャッシュは Spring キャッシュで、Guava キャッシュにキャストするとエラーが発生します。
これは可能ですか?それとも私は何か間違ったことをしましたか?