zoukankan      html  css  js  c++  java
  • EHCache 实现通用类 CacheManager

    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();
    			}
    		}
    	}
    
    }
    

    Meet so Meet. C plusplus I-PLUS....
  • 相关阅读:
    Java基础-算法
    Java基础-语法-下
    Java基础-语法-上
    数据清洗工作日志
    docker login 登陆总是不成功
    SpringCloud启动eureka server报错ArrayStoreException,TypeNotPresentExceptionProxy
    pve开机提示volume group ‘pve’ not found问题
    java生成pdf字体的坑
    TwelveMonkeys处理图片
    实验6 流类库与I/O
  • 原文地址:https://www.cnblogs.com/iplus/p/4464714.html
Copyright © 2011-2022 走看看