Ureport2提供了ReportDefinitionCache接口,在使用缓存(保存、加载)的时候,会去Spring容器内找一下ReportDefinitionCache实现类,没找到的情况下会使用默认的DefaultMemoryReportDefinitionCache,这个类中使用ConcurrentHashMap实现缓存效果。下面是源码:
public class CacheUtils implements ApplicationContextAware{
private static ReportCache reportCache;
private static ReportDefinitionCache reportDefinitionCache;
private static String CHART_DATA_key="_chart_data_";
@SuppressWarnings("unchecked")
public static ChartData getChartData(String chartId){
String key=CHART_DATA_key;
if(reportCache!=null){
Map<String, ChartData> chartDataMap = (Map<String, ChartData>)reportCache.getObject(key);
if(chartDataMap!=null){
return chartDataMap.get(chartId);
}
}
return null;
}
public static void storeChartDataMap(Map<String, ChartData> map){
String key=CHART_DATA_key;
if(reportCache!=null){
reportCache.st