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

系统实现缓存有多种方式,如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. Oracle :%TYPE 和 %ROWTYPE

    1. 使用%TYPE 在许多情况下,PL/SQL变量可以用来存储在数据库表中的数据.在这种情况下,变量应该拥有与表列相同的类型.例如,students表的first_name列的类型为VARCHAR2 ...

  2. obj-c编程14:Cocoa和Cocoa Touch简介

    这一篇篇幅相对少很多,几乎没有代码,全部都要靠本猫的语言组织能力啊!Cocoa框架在前面讲解F库时曾简单做过介绍,现在再具体说一说喽.各位童鞋是否已经发现鸟,前面所写的所有代码都是基于终端(或称之为c ...

  3. C# 视频多人脸识别

    上一篇内容的调整,并按 @轮回 的说法,提交到git了,https://github.com/catzhou2002/ArcFaceDemo 基本思路如下: 一.识别线程 1.获取当前图片 2.识别当 ...

  4. JAVA_Lock

    今天是毕业入职的第一个周末,一直对多线程并发方面的知识比较感兴趣,因为目前我手里的项目并没有涉及到并发方面的知识,所以怕以后遗忘,也便于以后复习和使用,所以总结了一下Lock里面的一些类的方法.具体的 ...

  5. 2018 .NET开发者调查报告: .NET Core 是怎么样的状态

    4月28日,在公众号里发起<.NET Core 使用调查>,该调查为期一周,有近3300名开发者参与. 已经使用.net core  的人数只有44%,计划使用.net core 比例达到 ...

  6. Spring Boot定时任务应用实践

    在Spring Boot中实现定时任务功能,可以通过Spring自带的定时任务调度,也可以通过集成经典开源组件Quartz实现任务调度. 一.Spring定时器 1.cron表达式方式 使用自带的定时 ...

  7. Web服务器Tomcat集群与负载均衡技术

    我们曾经介绍过三种Tomcat集群方式的优缺点分析.本文将介绍Tomcat集群与负载均衡技术具体实施过程. 在进入集群系统架构探讨之前,先定义一些专门术语: 1. 集群(Cluster):是一组独立的 ...

  8. How Microservices are Transforming Python Development

    https://blog.appdynamics.com/engineering/how-microservices-are-transforming-python-development/ Summ ...

  9. 关于在IJ中使用maven projects 的Lifecycle中打包package报expected START_TAG or END_TAG not TEXT

    报错指定到maven本地仓库下的settings.xml某一行,如下列JDK配置: <profiles> <profile>    <id>jdk-1.8</ ...

  10. codeforces——961A Tetris

    本文是博主原创文章,未经允许不得转载. 我在csdn上也同步发布了此文,链接 https://blog.csdn.net/umbrellalalalala/article/details/798915 ...