一个ehcache的简单工具类,
测试环境
jdk1.6
Ehcahce ehcache-2.8.3
package com.utils; import java.net.URL; import com.Person; import net.sf.ehcache.Cache; import net.sf.ehcache.CacheManager; import net.sf.ehcache.Element; public class CacheManagerUtil { private static CacheManagerUtil cacheManagerUtil; private static CacheManager cacheManager ; private static Cache cache; private CacheManagerUtil(){} /** * 初始化 * @param cacheName * @return */ public static synchronized CacheManagerUtil getInit(String cacheName){ if(cacheManagerUtil==null){ cacheManagerUtil = new CacheManagerUtil(); URL url = CacheManagerUtil.class.getResource("/ehcache.xml"); cacheManager = CacheManager.create(url); } cache = cacheManager.getCache(cacheName); return cacheManagerUtil; } /** * 删除全部缓存 */ public static synchronized void removeAll(){ cache.removeAll(); } /** * 添加缓存 * @param key * @param value */ public synchronized void put(String key,Object value){ Element element = new Element(key, value); cache.put(element); } /** * 获取缓存数据 * @param key * @return */ public synchronized Object get(String key){ Element element = cache.get(key); Object value = element==null ? null:element.getObjectValue(); return value; } public void close(){ cacheManager.shutdown(); } public static void main(String[] args){ CacheManagerUtil util = CacheManagerUtil.getInit("DATA_DICTIONARY_CACHE"); util.put("person1", new Person("王五", 20)); util.put("person2", new Person("张三", 21)); util.put("person3", new Person("李四", 22)); System.out.println(util.get("person1")); System.out.println(util.get("person2")); System.out.println(util.get("person3")); util.close(); } }ehcache.xml配置文件,放在根目录下
<?xml version="1.0" encoding="UTF-8"?> <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ehcache.xsd" updateCheck="true" monitoring="autodetect" dynamicConfig="true"> <diskStore path="java.io.tmpdir" /> <defaultCache maxEntriesLocalHeap="0" eternal="false" timeToIdleSeconds="1200" timeToLiveSeconds="1200"> </defaultCache> <cache name="REMINDER_CACHE" maxElementsInMemory="10000" maxElementsOnDisk="10000000" overflowToDisk="true" eternal="false" timeToIdleSeconds="300" timeToLiveSeconds="600"> </cache> <cache name="DATA_DICTIONARY_CACHE" maxElementsInMemory="10000" maxElementsOnDisk="10000000" overflowToDisk="true" eternal="true"> </cache> </ehcache>person对象实例
package com; import java.io.Serializable; public class Person implements Serializable{ private static final long serialVersionUID = 1L; private static long id = 1; private final long personId = id++; private String name; private int age; static{ System.out.println("执行静态语句块"); } public Person(){ System.out.println("无参构造函数!"); } public Person(String name ,int age){ this.name = name; this.age = age; System.out.println("有参构造函数!"); } /** * @return the name */ public String getName() { return name; } /** * @param name the name to set */ public void setName(String name) { this.name = name; } /** * @return the age */ public int getAge() { return age; } /** * @param age the age to set */ public void setAge(int age) { this.age = age; } /** * @return the personId */ public long getPersonId() { return personId; } /* (non-Javadoc) * @see java.lang.Object#toString() */ @Override public String toString() { return "Person [personId=" + personId + ", name=" + name + ", age=" + age + "]"; } }
执行静态语句块
有参构造函数!
有参构造函数!
有参构造函数!
Person [personId=1, name=王五, age=20]
Person [personId=2, name=张三, age=21]
Person [personId=3, name=李四, age=22]