首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

缓存-ehcache

2013-06-25 
缓存--ehcachejava 缓存有时必不可少?常见缓存框架:EhCache,oschcache1.需要配置一个xml文件,官网上有?xm

缓存--ehcache

java 缓存有时必不可少

?

常见缓存框架: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

?

热点排行