************************************************************************************

系统实现缓存有多种方式,如redis,ehcache,Memcached,在项目开发中,使用另外一种实现方式使用xml配置文件和XStream方式实现缓存,原理是数据放在内存中。思路是:定义一个全局静态变量Map,将数据保存在map中即可。

************************************************************************************

步骤一:配置xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<webcache><cache><name>CACHE_DICT</name><descript>数据字典</descript><datasource></datasource><sql><![CDATA[]]></sql><mapperid>vc.cache.mapper.CACHE_DICT</mapperid><type>DICT</type></cache>
</webcache>

步骤二:建对应的实体类

// XStream的别名注解,在xml文件对应标签名
@XStreamAlias("webcache")
public class WebCacheXmlBean {
   // 集合注解,只能用在集合属性上
    @XStreamImplicit List<CacheXmlBean> cacheList;public List<CacheXmlBean> getCacheList() {return cacheList;}public void setCacheList(List<CacheXmlBean> cacheList) {this.cacheList = cacheList;}
}

@XStreamAlias("cache")
public class CacheXmlBean {public static final String CACHE_TYPE_DICT = "DICT";public static final String CACHE_TYPE_DATA = "DATA";private String name;private String descript;private String datasource;private String sql;private String mapperid;private String type;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getDescript() {return descript;}public void setDescript(String descript) {this.descript = descript;}public String getDatasource() {return datasource;}public void setDatasource(String datasource) {this.datasource = datasource;}public String getSql() {return sql;}public void setSql(String sql) {this.sql = sql;}public String getMapperid() {return mapperid;}public void setMapperid(String mapperid) {this.mapperid = mapperid;}public String getType() {return type;}public void setType(String type) {this.type = type;}
}

步骤三:将xml配置信息转化为bean

public static Map<String, List> DATA_CACHES = new HashMap<>();public void dictCache(){XStream xStream = new XStream();//自动扫描注解xStream.autodetectAnnotations(true);
    // 扫描实体类xStream.processAnnotations(new Class[]{WebCacheXmlBean.class, CacheXmlBean.class}); File file = new File("f:/ETOM/pmms/pmms/src/test/resources/dict.xml");WebCacheXmlBean webCacheXmlBean = (WebCacheXmlBean) xStream.fromXML(file);List<CacheXmlBean> cacheXmlList = webCacheXmlBean.getCacheList();for (CacheXmlBean cacheXmlBean : cacheXmlList) {String cacheName = cacheXmlBean.getName();String mapperid = cacheXmlBean.getMapperid();String sql = cacheXmlBean.getSql();List cacheList = null;if(StringUtil.isNotEmpty(mapperid)){cacheList = dao.find(mapperid);}else if(StringUtil.isNotEmpty(sql)){cacheList = dao.findBySQL(sql);}logger.info("load cache 【"+cacheName+"】");if(cacheList != null){DATA_CACHES.put(cacheName, cacheList);}}
}

转载于:https://www.cnblogs.com/antlord/p/8321473.html

XStream实现缓存相关推荐

  1. jeesite缓存问题

    jeesite,其框架主要为: 后端 核心框架:Spring Framework 4.0 安全框架:Apache Shiro 1.2 视图框架:Spring MVC 4.0 服务端验证:Hiberna ...

  2. 你的第一杯Web 2.0 —— 快速浏览jQuery、Spring MVC和XStream/Jettison

    不再有页面刷新:使用jQuery 相关厂商内容 免费迷你书下载:Flex入门指南--PHP开发者 Flash Builder 4 Beta和FlexUnit下的测试驱动开发 下载Flex 4 SDK, ...

  3. [转载] XStream的分析

    参考链接: XStream教程 XStream是一个序列化对象为XML或XML转换为对象的库. 特点: 简化的API; 无映射文件; 高性能,低内存占用; 整洁的XML; 不需要修改对象;支持内部私有 ...

  4. XStream的分析

    XStream是一个序列化对象为XML或XML转换为对象的库.   特点:   简化的API;  无映射文件;  高性能,低内存占用;  整洁的XML;  不需要修改对象;支持内部私有字段,不需要se ...

  5. 『Java安全』XStream 1.4-1.4.61.4.10反序列化漏洞CVE-2013-7285复现与浅析

    文章目录 前言 漏洞简介 影响版本 PoC interface(官方PoC) sorted-set tree-map 漏洞复现 代码审计 | 原理分析 interface 缺点 sorted-set和 ...

  6. 上传 下载 发邮件 Ajax XStream JSON

    上传 上传对表单限制:method="post" ,enctype="multipart/form-data" 上传对Servlet限制 request.get ...

  7. xstream-1.4.4_您的第一届Web 2.0杯-jQuery,Spring MVC和XStream / Jettison快速浏览

    xstream-1.4.4 没有更多页面刷新:使用jQuery! 这是我帮助建立的网站用户的公开道歉:"对不起,我因不必要的页面刷新而使您受苦." 这是今年早些时候学习jQuery ...

  8. Spring中启用Hibernate二级缓存步骤

    1.在applicationContext.xml配置文件中SessionFactory  bean中配置缓存 <!-- 配置会话工厂对象 --> <bean id="se ...

  9. Redis 预防缓存穿透“神器” — 布隆过滤器

    1. 布隆过滤器 1.1 概念 在架构设计时有一种最常见的设计被称为布隆过滤器,它可以有效减少缓存穿透的情况.其主旨是采用一个很长的二进制数组,通过一系列的 Hash 函数来确定该数据是否存在. 布隆 ...

最新文章

  1. 代码洁癖的春天!Java 效率工具之 Lombok
  2. 使用链路聚合进行负载分担
  3. 通过浏览器navigator判断浏览器版本或者手机类型判断微信访问
  4. 阿里云Ubuntu 14.04 + Nginx + let's encrypt 搭建https访问
  5. java中的包装流和缓冲流概述
  6. Vmware Workstation 6.5试用之二—支持设备的热插拔功能
  7. 详解Python序列解包(3)
  8. php根据某个字段合并两个二维数组,php根据指定字段匹配查找合并两个二维数组...
  9. python生成器yield原理_python生成器generator,yield
  10. 刷算法题必备的基础数论知识
  11. 刷新代码IOS 上拉分页刷新--
  12. Springboot配置文件
  13. PDF文件转换成图片的格式
  14. IB中文阅读书单推荐
  15. 【应用笔记】APM32F4xx_ADC应用笔记
  16. FullCalendar日历控件vue使用记录
  17. 什么是固定资产管理系统?用固定资产管理系统管理固定资产的好处?
  18. 杰奇运行在php7,index.php
  19. 艾宾浩斯记忆遗忘曲线-背单词
  20. 微视linux scsi驱动超时错误处理

热门文章

  1. python中分支语句elif与else的区别_浅谈对python中if、elif、else的误解
  2. C# ashx生成的验证码
  3. 搭建gradle环境
  4. adb模拟按键home_ADB——模拟手机按键输入
  5. c#打印乘法口诀_小学数学所有公式和顺口溜都在这里了!建议家长收藏打印!...
  6. 数据挖掘技术之离群点检测
  7. birt脚本for循环语句_Python入门第7课,循环结构学习,for语句range函数的3种用法
  8. 图像形状特征(二)--Hu距
  9. 前景检测算法(十一)--基于LBP纹理
  10. linux 的学习笔记-linux 指令大全