EhCache其实底层的实现就是static方法,我声名一个变量为static,实际上就把这个变量放在了缓存中,只不过EhCahce等缓存框架是封装了一层,提供了一些实用的方法并且可以进行一些配置。
下面介绍一个简单的实用EhCache的例子。
代码分成4个部分。
public class TestMain {
/**
* @param args
*/
public static void main(String[] args) {
EhcacheUtil eUtil = new EhcacheUtil();
String one = eUtil.getPrame("1");
System.out.println(one);
}
}
public class EhcacheUtil {
private Cache cache ;
private void loadPrame(){
try {
CacheManager cm = CacheManager.create("src/com/x/ehcache.xml");
// cache = new Cache("b", 5000, false, false, 5, 2);
// cm.addCache(cache);
// cache = cm.getCache("b");
cache = cm.getCache("a");
PrameUtil pUtil = new PrameUtil();
for(int i=1;i<6;i++){
cache.put(new Element(String.valueOf(i),pUtil.getPrame(String.valueOf(i))));
}
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (CacheException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public String getPrame(String key){
String value = "";
try {
if(cache == null){loadPrame();}
Element el = cache.get((String)key);
if(el == null){loadPrame();el = cache.get((String)key);}
if(el == null){System.out.println("没有");}
else{value = el.getValue().toString();}
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (CacheException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return value;
}
}
public class PrameUtil {
public String getPrame(String key){
String value = "";
InputStream is = this.getClass().getClassLoader().getResourceAsStream("com/p/p.properties");
Properties p = new Properties();
try {
p.load(is);
value = p.getProperty(key);
} catch (IOException e) {
e.printStackTrace();
}
return value;
}
}
ehcache.xml:
<ehcache> <defaultCache maxElementsInMemory="1000" eternal="true" timeToIdleSeconds="3600" timeToLiveSeconds="3600" overflowToDisk="true" /> <cache name="a" maxElementsInMemory="1000" eternal="true" timeToIdleSeconds="3600" timeToLiveSeconds="3600" overflowToDisk="false" /> </ehcache>
执行结果,输出“a"