EhCache
来源:互联网 发布:十年前你错过了淘宝 编辑:程序博客网 时间:2024/05/16 09:13
常见缓存框架:EhCache,oschcache
1.需要配置一个xml文件,官网上有
<?xml version="1.0" encoding="UTF-8"?><ehcache name="EventCache"> <defaultCache maxElementsInMemory="10" eternal="false" timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="false"> </defaultCache></ehcache>
2.cache工具类,封装
package org.wangcong.cache;import java.util.HashMap;import java.util.Map;import org.wangcong.cache.interfaces.InitCacheInter;import net.sf.ehcache.Cache;import net.sf.ehcache.CacheManager;public class CacheUtil {private static Map<String,String> CACHE_CLASS = new HashMap<String,String>();//缓存和实现类对应表,应该从数据库中读取,这里模拟private static CacheManager manager = null;//缓存总管static{manager = CacheManager.create();CACHE_CLASS.put("CACHE_CODE1", "org.wangcong.cache.impl.InitCacheInterImpl1");}public static Cache getCache(String cacheName)throws Exception{//获取具体缓存Cache cache = manager.getCache(cacheName);if(cache==null){cache = new Cache(cacheName, 5000, false, false, 5, 2);manager.addCache(cache);initCache(cache,cacheName);}return cache;}private static void initCache(Cache cache,String cacheName) throws Exception{//加载缓存资源//因为cacheName-->缓存具体实现类String className = CACHE_CLASS.get(cacheName);InitCacheInter initCache = (InitCacheInter) Class.forName(className).newInstance();initCache.initCache(cache);}public static Object getValue(Cache cache,String key){return cache.get(key).getObjectValue();}}
3.定义接口契约
package org.wangcong.cache.interfaces;import net.sf.ehcache.Cache;public interface InitCacheInter {public void initCache(Cache cache)throws Exception;}
4.定义一个实现类
package org.wangcong.cache.impl;import org.wangcong.cache.interfaces.InitCacheInter;import net.sf.ehcache.Cache;import net.sf.ehcache.Element;public class InitCacheInterImpl1 implements InitCacheInter {public InitCacheInterImpl1(){}public void initCache(Cache cache) throws Exception {//模拟加载数据Element ele1 = new Element("key1", "value1");Element ele2 = new Element("key2", "value2");//...Element("key",Object obj);cache.put(ele1);cache.put(ele2);}}
5.定义一些KEY
package org.wangcong.cache;public class CacheStatic {final public static String CACHE_CODE1 = "CACHE_CODE1";//org.wangcong.cache.impl.InitCacheInterImpl1}
6.定义一个业务实现类
package org.wangcong.cache.test.service;import net.sf.ehcache.Cache;import org.wangcong.cache.CacheStatic;import org.wangcong.cache.CacheUtil;public class CacheCode1 {public Object getValue(String key)throws Exception{Cache cache = CacheUtil.getCache(CacheStatic.CACHE_CODE1);Object obj = CacheUtil.getValue(cache, key);return obj;}}
7.主函数,进行测试
package org.wangcong.cache.test;import org.wangcong.cache.test.service.CacheCode1;public class CacheDeno {/** * @param args */public static void main(String[] args) {CacheCode1 code1 = new CacheCode1();try {System.out.println(code1.getValue("key1"));} catch (Exception e) {e.printStackTrace();}}}
-----
这样把业务层和实现层全部分离出来,可扩展性比较好些--OVER
0 0
- Ehcache
- Ehcache
- ehcache
- ehcache
- EHCache
- ehCache
- ehcache
- ehcache
- ehcache
- ehcache
- ehcache
- ehcache
- EhCache
- Ehcache
- ehcache
- Ehcache
- ehcache
- EHCache
- mysql_fetch_array 与 mysql_fetch_row的区别
- hdu 2602 简单0-1背包模板题
- open和fopen的区别
- achartengine画出动态折线图
- ARM平台处理器简介-ARMv7
- EhCache
- 小谈achartengine绘图
- fedora安装kde桌面
- NHibernate 3 查询APIQueryOver
- 从新女同事说百度搜索的问题和方向
- Spring JDBC应用
- FFMPEG源码分析(1)--再版--持续更新
- 黑马程序员 Java基础学习笔记9 类
- Fedora 18使用iso DVD做镜像源yum安装软件,适合无网装软件或者网速较慢的情况