【发布时间】:2020-09-02 10:37:48
【问题描述】:
我正在使用 spring 缓存和 hazelcast,我只是想将响应保存到我的控制器:
@Bean
@Override
public CacheManager cacheManager() {
return new HazelcastCacheManager(hazelcastInstance);
}
//creating hazelcast cache config.
@Bean
public HazelcastClientCacheManager hazelcastClientCacheManager() {
CachingProvider provider =
HazelcastClientCachingProvider.createCachingProvider(hazelcastInstance);
HazelcastClientCacheManager cacheManager = (HazelcastClientCacheManager) provider.getCacheManager();
cacheManager.getHazelcastInstance().getConfig().getSerializationConfig().getByteOrder();
Duration oneHours = Duration.ONE_MINUTE;
MutableConfiguration<Object, Object> configuration = new MutableConfiguration<>();
configuration.setTypes(Object.class, Object.class)
.setExpiryPolicyFactory(AccessedExpiryPolicy.factoryOf(oneHours))
.setStatisticsEnabled(true);
cacheManager.createCache("mycache", configuration);*
return cacheManager;
}
//My CacheResolver
@Bean
@Override
public CacheResolver cacheResolver() {
return new CustomCacheResolver(cacheManager());
}
有问题,在我的 CacheResolver.class 中:
public class CustomCacheResolver implements CacheResolver {
private final CacheManager cacheManager;
@Override
public Collection<? extends Cache> resolveCaches(CacheOperationInvocationContext<?> context) {
Collection<Cache> caches = new ArrayList<>();
caches.add(cacheManager.getCache("mycache"));
return caches;
}
发件人:
@Cacheable(cacheResolver = "cacheResolver", key = "#uuid+",
unless="#result.size() == 0")
myMethod(String uuid){}
问题:CustomCacheResolver中的resolveCaches必须返回Cache集合,但是我在hazelcast中创建的缓存是ICache。
有什么想法吗?我需要使用该缓存及其配置、ttl 等。 提前致谢!
Java 11。 弹簧靴 弹簧缓存。 榛树。
【问题讨论】:
-
从我看到的
HazelcastCacheManager#getCache(String name)返回Cache(不是ICache)。所以应该没问题。你能澄清一下这个问题吗? github.com/hazelcast/hazelcast/blob/master/hazelcast-spring/src/… -
是的,我的错!解决方案是使用 import com.hazelcast.spring.cache.HazelcastCacheManager;并创建一个 CacheManager concurrentMapCacheManager 类型的 bean。谢谢!很多!
标签: hazelcast spring-cache jcache