Ureport2——自定义文件缓存
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——自定义文件缓存相关推荐
- ASP.NET性能优化之构建自定义文件缓存
ASP.NET的输出缓存(即静态HTML)在.NET4.0前一直是基于内存的.这意味着如果我们的站点含有大量的缓存,则很容易消耗掉本机内存.现在,借助于.NET4.0中的OutputCacheProv ...
- iOS自定义弹出视图、收音机APP、图片涂鸦、加载刷新、文件缓存等源码
iOS精选源码 一款优秀的 聆听夜空FM 源码 zhPopupController 简单快捷弹出自定义视图 WHStoryMaker搭建美图(贴纸,涂鸦,文字,滤镜) iOS cell高度自适应 有加 ...
- iOS自定义弹出视图、收音机APP、图片涂鸦、加载刷新、文件缓存等源码 1
iOS精选源码 一款优秀的 聆听夜空FM 源码 zhPopupController 简单快捷弹出自定义视图 WHStoryMaker搭建美图(贴纸,涂鸦,文字,滤镜) iOS cell高度自适应 有加 ...
- [Swift通天遁地]五、高级扩展-(11)图像加载Loading动画效果的自定义和缓存
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...
- R语言使用fs包的path_wd函数基于自定义文件路径规则,批量生成多个文件或者文件夹对应的绝对(absolute)文件路径(constructs absolute path)
R语言使用fs包的path_wd函数基于自定义文件路径规则,批量生成多个文件或者文件夹对应的绝对(absolute)文件路径(constructs an absolute path from the ...
- php数据库缓存类,常见php数据文件缓存类汇总
本文实例汇总了常见php数据文件缓存类.分享给大家供大家参考.具体分析如下: 数据文件缓存的做法我们常用的有php文件缓存与利用memcache来缓存数据,下面面我分别总结了memcache缓存数据与 ...
- 使用ReaderWriterLock优化文件缓存
公司使用的文件缓存经常出现大量的并发冲突,主要原因有两个:一个是读取文件时刚好文件被删除了,这样会抛出找不到文件的异常: 另一个是资源权限争抢的问题,可能会导致没有权限操作的情况. R ...
- android 内部存储 清空,Android清空应用内部文件缓存
Android应用中加载的图片以及一些数据缓存怎么清掉呢?最近在做项目中遇到了这个问题,网上搜了一下找到了不少的源代码,综合了这些源码,下面给大家说一下吧,怎么有效的清除应用内存的缓存信息? 清除应用 ...
- CKFinder 自定义文件路径扩展ConfigurationPathBuilder
CKFinder 自定义文件路径扩展ConfigurationPathBuilder 打开config.xml当中可以看到如下配置 <basePathBuilderImpl>com.ckf ...
最新文章
- python学习方向-Python方向(转载)
- OpenCV3特征提取与目标检测之HOG(二)——使用官方的行人分类器实现行人检测
- python贪吃蛇小游戏_python开发贪吃蛇小游戏
- Android 菜单(OptionMenu)大全 建立你自己的菜单
- 2021考研初试成绩多少分过线?
- java只修改变的字段_修改Java中的最终字段
- js获取地址栏url以及获取url参数
- IDEA webapp文件夹没有蓝色小圆点的解决方案
- 面试常问:BIO,NIO,AIO
- 怎么用python下载网易云_使用Python实现下载网易云音乐的高清MV
- jmeter安全证书_使用Jmeter进行https接口测试时,如何导入证书
- 【第二节】HTML5小实例
- 麦子学院字符设备驱动201126
- 如何找到隐式转换的SQL?
- QQ隐藏图原理与C#实现(含源文件)
- NAS论文笔记:代理模型篇:NSGA Net V2: Evolutionary Multi-Objective Surrogate-Assisted Neural Architecture Sear
- 《Java编程思想》读书笔记
- 《推荐几个常用的H5+APP制作开发工具》
- 神经网络学习笔记3——Transformer、VIT与BoTNet网络
- R 线性模型 检验异常观测值
热门文章
- 麦当劳中国推出新升级巨无霸;斯凯孚大连四期新工厂项目动工 | 美通企业日报...
- 【SJTUOJ笔记】P1125 Typist (NOI2001 聪明的打字员)
- java通过url获取图片文件
- 【低代码开发】智慧水务解决方案
- Docker部署深度学习服务器,CUDA+cudnn+ssh
- PHP的md5 java实现
- java 抽奖算法_Java抽奖算法第二例
- java ssm小案例_简易的SSM框架整合小案例
- 电气自动化和计算机专业比较,自动化专业与电气自动化专业的区别
- 用Aspera批量下载数据