以下用于获取所有缓存的代码在 2.10 (net.sf.ehcache.*) 中工作
public Map<CacheRegion, Map<Object, Element>> getCache() {
Map<CacheRegion, Map<Object, Element>> cachedData = new HashMap<CacheRegion, Map<Object, Element>>();
for (CacheRegion cacheRegion : CacheRegion.values()) {
Cache cache = cacheManager.getCache(cacheRegion.getRegionName());
Ehcache ehCache = ((EhCacheCache) cache).getNativeCache();
Map<Object, Element> cacheMap = ehCache.getAll(ehCache.getKeys());
cachedData.put(cacheRegion, cacheMap);
}
return cachedData;
}
// CacheRegion is an enum with cache keys
如何在 EhCache 3.9 (org.ehcache.*) 中实现相同的功能?我至少有 2 种不同类型的实体被缓存。我尝试查看https://stackoverflow.com/a/50389398/4669619但这对我不起作用。到目前为止,我已经替换Element
为Object
.
public Map<CacheRegion, Map<Object, Object>> getCache() {
Map<CacheRegion, Map<Object, Object>> cachedData = new HashMap<CacheRegion, Map<Object, Object>>();
for (CacheRegion cacheRegion : CacheRegion.values()) {
Cache cache = cacheManager.getCache(cacheRegion.getRegionName());
...
}
}
Element
在 2.x 示例中可以适用于任何/所有实体。它在 3.x 中不可用,所以我尝试Object
改用Ehcache
在 3.x 中也不可用,因此我无法将结果存储((EhCacheCache) cache).getNativeCache();
在其中Ehcache
在 3.x 中不可用意味着getAll
功能不可用
任何建议/想法将不胜感激!