我是使用 Google Guava 缓存的新手,但遇到了一些问题。请看下面的代码,它很简单。以下是我的问题和代码。1. 每当我testGuavaCache("6048698068");
从另一个类调用方法时 - 它总是每次都运行方法 - generateDataFromDAO();
。不应该只调用一次此方法,因为当它不存在于内存中时它会第一次缓存,下一次它将从内存中提供服务。感谢您的早日回复。
public class GuavaCach{
private static Logger objLogger = Logger.getLogger(WordToPDF.class);
LoadingCache<String, String> guavaCache = CacheBuilder.newBuilder()
.maximumSize(10000)
.build(
new CacheLoader<String, String>() {
public String load(String key) throws Exception {
objLogger.debug("-----KEY IN LOAD BEFORE calling generateDataFromDAO------->" + key + "<-------");
String out = generateDataFromDAO();
objLogger.debug("-----out after calling generateDataFromDAO------->" + out + "<-------");
return out;
}
});
public String testGuavaCache(String key) throws IOException {
String dataFromDAO = null;
objLogger.debug("-----Entering testGuavaCache-----");
try {
dataFromDAO = guavaCache.get(key);
} catch (ExecutionException e) {
e.printStackTrace();
}
return dataFromDAO;
}
public String generateDataFromDAO() throws PreviewErrorMsg, IOException {
objLogger.debug("-----Entering generateDataFromDAO-----");
String data = "GeneratedDataFromDAO";
return data;
}
}
在另一个班级 - 我在上面打电话:
GuavaCach gCache = new GuavaCach(); gCache..testGuavaCache("6048698068");