All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.yqjr.framework.component.cache.map.MapCache Maven / Gradle / Ivy

/**
 * 
 */
package com.yqjr.framework.component.cache.map;

import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

import org.springframework.util.Assert;

import com.yqjr.framework.component.cache.ICache;

/**
 * ClassName: MapCache 
* Description: 基于JVM内存的缓存实现
* Create By: admin
* Create Date: 2017年5月4日 下午4:31:33
* Modified By:
* Modified Date:
* Modified Content:
* Version: 1.0
*/ public class MapCache implements ICache { private static Map> cache = new HashMap>(); private static final String FRAMEWORK_CACHE = "framework.cache"; private static MapCache instance = null; private MapCache() { } public static MapCache getInstance() { if (instance == null) { synchronized (MapCache.class) { if (instance == null) { instance = new MapCache(); } } } return instance; } /* * (non-Javadoc) * * @see com.yqjr.framework.component.cache.ICache#get(java.lang.String) */ @SuppressWarnings("unchecked") @Override public Object get(String key) { Assert.hasText(key); return getCache(FRAMEWORK_CACHE).get(key.trim()); } /* * (non-Javadoc) * * @see com.yqjr.framework.component.cache.ICache#put(java.lang.String, * java.lang.Object) */ @Override public void put(String key, Object value) { Assert.hasText(key); Assert.notNull(value); getCache(FRAMEWORK_CACHE).put(key.trim(), value); } /* * (non-Javadoc) * * @see * com.yqjr.framework.component.cache.ICache#putIfAbsent(java.lang.String, * java.lang.Object) */ @SuppressWarnings("unchecked") @Override public Object putIfAbsent(String key, Object value) { Assert.hasText(key); Assert.notNull(value); return getCache(FRAMEWORK_CACHE).putIfAbsent(key.trim(), value); } /* * (non-Javadoc) * * @see com.yqjr.framework.component.cache.ICache#remove(java.lang.String) */ @SuppressWarnings("unchecked") @Override public Object remove(String key) { Assert.hasText(key); return getCache(FRAMEWORK_CACHE).remove(key.trim()); } /* * (non-Javadoc) * * @see com.yqjr.framework.component.cache.ICache#clear() */ @Override public void clear() { getCache(FRAMEWORK_CACHE).clear(); } /* * (non-Javadoc) * * @see com.yqjr.framework.component.cache.ICache#get(java.lang.String, * java.lang.String) */ @SuppressWarnings("unchecked") @Override public Object get(String cacheName, String key) { Assert.hasText(cacheName); Assert.hasText(key); return getCache(cacheName.trim()).get(key.trim()); } /* * (non-Javadoc) * * @see com.yqjr.framework.component.cache.ICache#put(java.lang.String, * java.lang.String, java.lang.Object) */ @Override public void put(String cacheName, String key, Object value) { Assert.hasText(cacheName); Assert.hasText(key); Assert.notNull(value); getCache(cacheName.trim()).put(key.trim(), value); } /* * (non-Javadoc) * * @see * com.yqjr.framework.component.cache.ICache#putIfAbsent(java.lang.String, * java.lang.String, java.lang.Object) */ @SuppressWarnings("unchecked") @Override public Object putIfAbsent(String cacheName, String key, Object value) { Assert.hasText(cacheName); Assert.hasText(key); Assert.notNull(value); return getCache(cacheName.trim()).putIfAbsent(key.trim(), value); } /* * (non-Javadoc) * * @see com.yqjr.framework.component.cache.ICache#remove(java.lang.String, * java.lang.String) */ @SuppressWarnings("unchecked") @Override public Object remove(String cacheName, String key) { Assert.hasText(cacheName); Assert.hasText(key); return getCache(cacheName.trim()).remove(key.trim()); } /* * (non-Javadoc) * * @see com.yqjr.framework.component.cache.ICache#clear(java.lang.String) */ @Override public void clear(String cacheName) { Assert.hasText(cacheName); getCache(cacheName.trim()).clear(); } /** * Description: 根据缓存名称获取缓存实例,如果不存在则创建
* Create By: admin
* Create Date: 2017年5月5日 上午8:44:34 * * @param cacheName * @return */ private ConcurrentHashMap getCache(String cacheName) { Assert.hasText(cacheName); ConcurrentHashMap scache = (ConcurrentHashMap) cache.get(cacheName); if (scache == null) { synchronized (this) { if ((scache = (ConcurrentHashMap) cache.get(cacheName)) == null) { scache = new ConcurrentHashMap(); cache.put(cacheName, scache); } } } return scache; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy