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
}

すべて正常に動作しますが、stats() メソッドを呼び出すために CacheBuilder によって作成されたキャッシュ Guava オブジェクトを取得できません。

これは私がキャッシュを取得する方法です:

Cache myCache = cacheManager.getCache("myCache");
ValueWrapper wrapper = myCache.get("key");
WebServiceType myCachedObject= (WebServiceType) wrapper.get();

最後のキャッシュは Spring キャッシュで、Guava キャッシュにキャストするとエラーが発生します。

これは可能ですか?それとも私は何か間違ったことをしましたか?

4

0 に答える 0