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

系统实现缓存有多种方式,如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. window7如何配置修改环境变量

    http://jingyan.baidu.com/article/b24f6c82cba6dc86bfe5da9f.html

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

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

  3. 02_Linux学习_命令

    帮助命令:        xxx --help        man xxx 列出当前目录下的目录和文件:        ls        ls -l        ls --help        ...

  4. Spring3 MVC

    一.前言: 大家好,Spring3 MVC是非常优秀的MVC框架,由其是在3.0版本发布后,现在有越来越多的团队选择了Spring3 MVC了.Spring3 MVC结构简单,应了那句话简单就是美,而 ...

  5. Java——面向对象

    面向对象和面向过程的区别:面向对象,强调的是对象即实体:面向过程强调的是过程,即动作. 面向对象的特点:1,将复杂的问题简单化 2,更符合人们的思考习惯 3,让曾经的在过程中的执行者,变成了指挥者. ...

  6. Android Selector原理

    android的selector对于android开发者而言再熟悉不过了,只要定义一个drawable目录下定义一个selector的xml文件,在布局文件中引用这个xml文件或者在代码中setBac ...

  7. JeeSite中Excel导入导出

    在各种管理系统中,数据的导入导出是经常用到的功能,通常导入导出以Excel.CSV格式居多.如果是学习的过程中,最好是自己实现数据导入与导出的功能,然而在项目中,还是调用现成的功能比较好.近期一直使用 ...

  8. Using Sass with the Angular CLI

    https://www.tuicool.com/articles/mauiMzY One of the first things you'll usually do in a project is t ...

  9. Redis模块化基本介绍

    概要 Redis Modules System基本概念 基本应用 参考资料 1. Redis Modules System基本概念 Redis Modules System是4.0出现一大改动点,使得 ...

  10. 第一章 C++概述

    第一节 C++语言的发展历史 略 第二节 C++语言的特点 1.C++是一种面向对象的程序设计语言,其中的新技术主要包括: 抽象数据类型 封装和信息隐蔽 以继承和派生方式实现程序的重用 以运算符重载和 ...