自己编写泛型通用 Ehcache入门
程序员文章站
2022-05-21 14:56:19
...
今天周末在家,无聊中看了下Ehcache,把我的Hello world 发表出了,呵呵:
1.下载Ehcache包
[url]http://nchc.dl.sourceforge.net/project/ehcache/ehcache/ehcache-2.4.2/ehcache-2.4.2-distribution.tar.gz
[/url]
2.ECLIPSE 创建java工程
(见附件)
GeneralCacheLoader.java
3.主要类
ICacheDataProvider.java
PersonDataProviderImpl.java
PersonEhcacheTest.java
1.下载Ehcache包
[url]http://nchc.dl.sourceforge.net/project/ehcache/ehcache/ehcache-2.4.2/ehcache-2.4.2-distribution.tar.gz
[/url]
2.ECLIPSE 创建java工程
(见附件)
GeneralCacheLoader.java
3.主要类
package com.sm.test; import net.sf.ehcache.Cache; import net.sf.ehcache.CacheManager; import net.sf.ehcache.Element; /** * 通用CacheLoader * @author Share Mu * @param <T> */ public class GeneralCacheLoader<T> { private static final CacheManager cacheManager = new CacheManager(GeneralCacheLoader.class.getResource("ehcache.xml")); private String cacheName=null; public void setCacheName(String cacheName) { this.cacheName = cacheName; } public void setIdp(ICacheDataProvider idp) { this.idp = idp; } public GeneralCacheLoader(){ } private ICacheDataProvider idp; public GeneralCacheLoader(String cacheName , ICacheDataProvider idp){ this.cacheName = cacheName; this.idp = idp; } public T load(String id){ if((T)getCache().get(id)==null) { T t =(T)idp.get(id); if(t!=null) { getCache().put(new Element(id,t)); } return t; } T p = (T)getCache().get(id).getValue(); return p; } public Cache getCache(){ return cacheManager.getCache(cacheName); } public void clear(){ cacheManager.getCache(cacheName).removeAll(); } public void remove(String id){ cacheManager.getCache(cacheName).remove(id); } }
ICacheDataProvider.java
public interface ICacheDataProvider { public Object get(String id); }
PersonDataProviderImpl.java
package com.sm.test; import java.util.HashMap; import java.util.Map; /** * 为Person cache提供数据 * @author Share Mu * */ public class PersonDataProviderImpl implements ICacheDataProvider{ private Map<Long,Person> source = new HashMap<Long,Person>(); public PersonDataProviderImpl(){ for(Long i = 0L ; i<100;i++) { Person ps = new Person(); ps.setId(i); ps.setCode("code_"+i); ps.setName("name_"+i); source.put(i,ps); } } public Object get(String id) { System.out.println("aaaaaaaaaaaaaa"); return source.get(new Long(id)); } }
PersonEhcacheTest.java
package com.sm.test; /** * 测试类 * @author Share Mu * */ public class PersonEhcacheTest { public static void main(String[] args) { PersonDataProviderImpl pdp = new PersonDataProviderImpl(); GeneralCacheLoader<Person> pelps = new GeneralCacheLoader<Person>("mypersoncache",pdp); long c1 = System.currentTimeMillis(); Person p = pelps.load("88"); long c2 = System.currentTimeMillis(); System.out.print("耗时"+(c2-c1)); if(p==null) { System.out.println("没发现...."); }else{ System.out.println("发现了...."+p.getName()+"--"+p.getCode()); } long c3 = System.currentTimeMillis(); p = pelps.load("88"); long c4 = System.currentTimeMillis(); System.out.print("耗时"+(c4-c3)); if(p==null) { System.out.println("没发现...."); }else{ System.out.println("发现了...."+p.getName()+"--"+p.getCode()); } } }