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

系统实现缓存有多种方式,如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);
}
}
}

XStream实现缓存的更多相关文章

  1. java生成解析xml的另外两种方法Xstream

    Xstream生成和解析xm和JAXB生成和解析xml的方法. 一,Xstream Xstream非jdk自带的,需要到入Xstream-1.4.3.jar和xpp3_min-1.1.4.jar 1. ...

  2. 使用XStream解析复杂XML并插入数据库(二)

    标注黄色地方:我需要加深学习!!! 我写的是webservice,目前具体写webservice的步骤我还不清楚, 整理完小知识开始整理webservice! 针对以下格式的XML进行解析 <? ...

  3. js相关(easyUI),触发器,ant,jbpm,hibernate二级缓存ehcache,Javamail,Lucene,jqplot,WebService,regex,struts2,oracle表空间

    *********************************************js相关********************************************* // 在指 ...

  4. Java安全之XStream 漏洞分析

    Java安全之XStream 漏洞分析 0x00 前言 好久没写漏洞分析文章了,最近感觉在审代码的时候,XStream 组件出现的频率比较高,借此来学习一波XStream的漏洞分析. 0x01 XSt ...

  5. 探究javascript对象和数组的异同,及函数变量缓存技巧

    javascript中最经典也最受非议的一句话就是:javascript中一切皆是对象.这篇重点要提到的,就是任何jser都不陌生的Object和Array. 有段时间曾经很诧异,到底两种数据类型用来 ...

  6. 哪种缓存效果高?开源一个简单的缓存组件j2cache

    背景 现在的web系统已经越来越多的应用缓存技术,而且缓存技术确实是能实足的增强系统性能的.我在项目中也开始接触一些缓存的需求. 开始简单的就用jvm(java托管内存)来做缓存,这样对于单个应用服务 ...

  7. ASP.NET Core 中间件之压缩、缓存

    前言 今天给大家介绍一下在 ASP.NET Core 日常开发中用的比较多的两个中间件,它们都是出自于微软的 ASP.NET 团队,他们分别是 Microsoft.AspNetCore.Respons ...

  8. ASP.NET Core 折腾笔记二:自己写个完整的Cache缓存类来支持.NET Core

    背景: 1:.NET Core 已经没System.Web,也木有了HttpRuntime.Cache,因此,该空间下Cache也木有了. 2:.NET Core 有新的Memory Cache提供, ...

  9. XStream将java对象转换为xml时,对象字段中的下划线“_”,转换后变成了两个的解决办法

            在前几天的一个项目中,由于数据库字段的命名原因 其中有两项:一项叫做"市场价格"一项叫做"商店价格" 为了便于区分,遂分别将其命名为market ...

随机推荐

  1. LeetCode(31)-Factorial Trailing Zeroes

    题目: Given an integer n, return the number of trailing zeroes in n!. Note: Your solution should be in ...

  2. rails项目如何改变已建立的model结构

    有时候第一次用rails g model或者scaffold建立数据模型的时候难免会出错,比如字段类型错误或者字段名称错误,甚至少添加或多添加了几个字段哦.这种情况下手动去修改数据结构是比较头疼的,官 ...

  3. vue2.0-基于elementui换肤[自定义主题]

    0. 直接上 预览链接 vue2.0-基于elementui换肤[自定义主题] 1. 项目增加主题组件 在项目的src/components下添加skin文件夹 skin文件获取地址 2. 项目增加自 ...

  4. onload="fixImage(this, 200, 200)"

    function fixImage(img, w, h) { var newImg = new Image(); //获得图片的原始尺寸 newImg.src = img.src; var lh; / ...

  5. CF959F

    题目大意:给定n个数,有Q次询问,每次询问由两个数l,x组成,表示前缀[1,l]构成的子序列有多少异或起来为x,个数%1e9+7 做法:考虑一个由x个数构成的线性基,如果这个线性基由Y个数构成,可以通 ...

  6. 使用IntelliJ IDEA的小技巧快乐编程(2)

    前言 本篇介绍的技巧为IntelliJ IDEA中自动代码生成相关的技巧,合理的使用这些技巧将大大提高的你的编码效率 :) Trick 6. 使用模板代码 idea默认的提供了许多模板代码,你可以使用 ...

  7. 初步认识thymeleaf:简单表达式和标签(一)

    初步认识Thymeleaf:简单表达式和标签.(一)   本文只适用于不会Java对HTML语言有基础的程序员们,是浏览了各大博客后收集整理,重新编辑的一篇文章,希望能对大家有所帮助.最后本文如果有哪 ...

  8. VS2017安装包不占用C盘空间的方法,亲试

    问题:普通VS2017的安装方式,不论是在线安装还是下载的离线安装包,都会在安装过程中将安装包保存在C:\ProgramData\Microsoft\VisualStudio\Packages文件夹下 ...

  9. linux上安装redis的踩坑过程

    redis用处很广泛,我不再啰嗦了,我按照网上教程想在linux上安装下,开始了踩坑过程,网上买了一个linux centos7.3,滴滴云的,巨坑无比啊,不建议大家用这家的! redis 为4.0, ...

  10. 只需几分钟跟小猫学前端(内含视频教程):nodejs基础之用express、ejs、mongdb建设简单的网站

    开门见山视频教程 https://v.qq.com/x/page/d0645s79xrq.html 前 言: 这是小猫的第二篇node教程,第一篇教程是一个简单的试水,小猫的node教程面向对象为没有 ...