package com.zhubaje.api.workflow.ehcache;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;
import org.springframework.beans.factory.DisposableBean;
/**
* 基本緩存支持類 <b>description:</b><br/>
* <b>createtime:</b>2013-5-10 上午11:41:47<br/>
* <b>remark:</b><br/>
*
* @version 1.0.0<br/>
*
*/
@SuppressWarnings("unchecked")
public class EhCacheBean<K extends Serializable, V> implements ICache<K, V>,
DisposableBean {
protected boolean useCache = true;
protected CacheManager cacheManager;
public CacheManager getCacheManager() {
return cacheManager;
}
public void setCacheManager(CacheManager cacheManager) {
this.cacheManager = cacheManager;
}
protected Cache cache;
@Override
public void put(K k, V v) {
if(useCache){
cache.put(new Element(k, v));
}
}
@Override
public V get(K key) {
if(!useCache){
return null;
}
if (!cache.isKeyInCache(key)) {
return null;
}
return (V) cache.get(key).getObjectValue();
}
@Override
public List<K> keys() {
return cache.getKeys();
}
@Override
public List<V> values() {
List<K> keys = cache.getKeys();
List<V> result = new ArrayList<V>(keys.size());
for (Iterator<K> itKey = keys.iterator(); itKey.hasNext();) {
result.add((V)cache.get(itKey.next()).getObjectValue());
}
return result;
}
@Override
public V remove(K key) {
if (cache.isKeyInCache(key)) {
Object obj = cache.get(key).getObjectValue();
cache.remove(key);
return (V) obj;
}
return null;
}
public Cache getCache() {
return cache;
}
public void setCache(Cache cache) {
this.cache = cache;
}
@Override
public void destroy() throws Exception {
synchronized (cacheManager) {
if (null != cacheManager) {
cacheManager.shutdown();
}
}
}
}
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

