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.storeObject(key, map);}}public static Object getObject(String file){if(reportCache!=null){return reportCache.getObject(file);}return null;}public static void storeObject(String file,Object obj){if(reportCache!=null){reportCache.storeObject(file, obj);}}public static ReportDefinition getReportDefinition(String file){return reportDefinitionCache.getReportDefinition(file);}public static void cacheReportDefinition(String file,ReportDefinition reportDefinition){reportDefinitionCache.cacheReportDefinition(file, reportDefinition);}@Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {Collection<ReportCache> coll=applicationContext.getBeansOfType(ReportCache.class).values();for(ReportCache cache:coll){if(cache.disabled()){continue;}reportCache=cache;break;}// 加载Spring容器中的实现类Collection<ReportDefinitionCache> reportCaches=applicationContext.getBeansOfType(ReportDefinitionCache.class).values();if(reportCaches.size()==0){//没有自定义实现,使用默认reportDefinitionCache=new DefaultMemoryReportDefinitionCache();}else{reportDefinitionCache=reportCaches.iterator().next();}}
}

实现ReportDefinitionCache接口并将实现类交给spring容器托管,就可以实现ureport的自定义缓存实现。

Ureport2——自定义文件缓存相关推荐

  1. ASP.NET性能优化之构建自定义文件缓存

    ASP.NET的输出缓存(即静态HTML)在.NET4.0前一直是基于内存的.这意味着如果我们的站点含有大量的缓存,则很容易消耗掉本机内存.现在,借助于.NET4.0中的OutputCacheProv ...

  2. iOS自定义弹出视图、收音机APP、图片涂鸦、加载刷新、文件缓存等源码

    iOS精选源码 一款优秀的 聆听夜空FM 源码 zhPopupController 简单快捷弹出自定义视图 WHStoryMaker搭建美图(贴纸,涂鸦,文字,滤镜) iOS cell高度自适应 有加 ...

  3. iOS自定义弹出视图、收音机APP、图片涂鸦、加载刷新、文件缓存等源码 1

    iOS精选源码 一款优秀的 聆听夜空FM 源码 zhPopupController 简单快捷弹出自定义视图 WHStoryMaker搭建美图(贴纸,涂鸦,文字,滤镜) iOS cell高度自适应 有加 ...

  4. [Swift通天遁地]五、高级扩展-(11)图像加载Loading动画效果的自定义和缓存

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  5. R语言使用fs包的path_wd函数基于自定义文件路径规则,批量生成多个文件或者文件夹对应的绝对(absolute)文件路径(constructs absolute path)

    R语言使用fs包的path_wd函数基于自定义文件路径规则,批量生成多个文件或者文件夹对应的绝对(absolute)文件路径(constructs an absolute path from the ...

  6. php数据库缓存类,常见php数据文件缓存类汇总

    本文实例汇总了常见php数据文件缓存类.分享给大家供大家参考.具体分析如下: 数据文件缓存的做法我们常用的有php文件缓存与利用memcache来缓存数据,下面面我分别总结了memcache缓存数据与 ...

  7. 使用ReaderWriterLock优化文件缓存

        公司使用的文件缓存经常出现大量的并发冲突,主要原因有两个:一个是读取文件时刚好文件被删除了,这样会抛出找不到文件的异常: 另一个是资源权限争抢的问题,可能会导致没有权限操作的情况.     R ...

  8. android 内部存储 清空,Android清空应用内部文件缓存

    Android应用中加载的图片以及一些数据缓存怎么清掉呢?最近在做项目中遇到了这个问题,网上搜了一下找到了不少的源代码,综合了这些源码,下面给大家说一下吧,怎么有效的清除应用内存的缓存信息? 清除应用 ...

  9. CKFinder 自定义文件路径扩展ConfigurationPathBuilder

    CKFinder 自定义文件路径扩展ConfigurationPathBuilder 打开config.xml当中可以看到如下配置 <basePathBuilderImpl>com.ckf ...

最新文章

  1. python学习方向-Python方向(转载)
  2. OpenCV3特征提取与目标检测之HOG(二)——使用官方的行人分类器实现行人检测
  3. python贪吃蛇小游戏_python开发贪吃蛇小游戏
  4. Android 菜单(OptionMenu)大全 建立你自己的菜单
  5. 2021考研初试成绩多少分过线?
  6. java只修改变的字段_修改Java中的最终字段
  7. js获取地址栏url以及获取url参数
  8. IDEA webapp文件夹没有蓝色小圆点的解决方案
  9. 面试常问:BIO,NIO,AIO
  10. 怎么用python下载网易云_使用Python实现下载网易云音乐的高清MV
  11. jmeter安全证书_使用Jmeter进行https接口测试时,如何导入证书
  12. 【第二节】HTML5小实例
  13. 麦子学院字符设备驱动201126
  14. 如何找到隐式转换的SQL?
  15. QQ隐藏图原理与C#实现(含源文件)
  16. NAS论文笔记:代理模型篇:NSGA Net V2: Evolutionary Multi-Objective Surrogate-Assisted Neural Architecture Sear
  17. 《Java编程思想》读书笔记
  18. 《推荐几个常用的H5+APP制作开发工具》
  19. 神经网络学习笔记3——Transformer、VIT与BoTNet网络
  20. R 线性模型 检验异常观测值

热门文章

  1. 麦当劳中国推出新升级巨无霸;斯凯孚大连四期新工厂项目动工 | 美通企业日报...
  2. 【SJTUOJ笔记】P1125 Typist (NOI2001 聪明的打字员)
  3. java通过url获取图片文件
  4. 【低代码开发】智慧水务解决方案
  5. Docker部署深度学习服务器,CUDA+cudnn+ssh
  6. PHP的md5 java实现
  7. java 抽奖算法_Java抽奖算法第二例
  8. java ssm小案例_简易的SSM框架整合小案例
  9. 电气自动化和计算机专业比较,自动化专业与电气自动化专业的区别
  10. 用Aspera批量下载数据