现在我的缓存如下所示:
public class TestCache {
private LoadingCache<String, List<ObjectABC>> cache;
TestCache() {
cache = CacheBuilder.newBuilder().expireAfterAccess(10, TimeUnit.MINUTES).maximumSize(25)
.build(new CacheLoader<String, List<ObjectABC>>(
) {
@Override
public List<ObjectABC> load(String key) throws Exception {
// TODO Auto-generated method stub
return addCache(key);
}
});
}
private List<ObjectABC> addCache(String key) {
final JoiObjectMapper mapper = new JoiObjectMapper();
final Collection<File> allConfigFiles = FileUtils.listFiles(new File(key), null, true);
final List<ObjectABC> configsList = new ArrayList<>();
allConfigFiles.forEach(configFile -> {
try {
configsList.add(mapper.readValue(configFile, new TypeReference<ObjectABC>() {
}));
} catch (Exception e) {
throw new RuntimeException(e);
}
});
return configsList;
}
public List<ObjectABC> getEntry(String key) {
try {
return cache.get(key);
} catch (ExecutionException e) {
throw new NonRetriableException(String.format(
"Exception occured while trying to get data from cache for the key : {} Exception: {}",
key.toString(), e));
}
}
}
在上面的代码中,当我传递 a String key(它是本地文件夹的路径)时,它会获取该位置存在的所有文件并将它们映射到ObjectABC使用ObjectMapper.
现在我的问题是我想要一个通用的加载缓存,比如
LoadingCache<String, List<Object>>.
我想将不同文件夹中的文件映射到不同的对象,例如将/root/Desktop/folder1中的List<ObjectABC>文件映射到/root/Desktop/folder2 中的文件,List<ObjectDEF>并能够从缓存中存储和检索该信息。
如何将用于映射的对象的信息传递给缓存?
米脂
相关分类