ehcache+spring配置
2016-01-26 19:24
411 查看
1. 在pom.xml里配置相关的依赖 net.sf.ehcache,slf4j-api,slf4j-log4j12, spring-common-support.
2. 配置ehcache
<?xml version="1.0" encoding="UTF-8"?>
<ehcache>
<!--timeToIdleSeconds 当缓存闲置n秒后销毁 -->
<!--timeToLiveSeconds 当缓存存活n秒后销毁 -->
<!--
缓存配置
name:缓存名称。
maxElementsInMemory:缓存最大个数。
eternal:对象是否永久有效,一但设置了,timeout将不起作用。
timeToIdleSeconds:设置对象在失效前的允许闲置时间(单位:秒)。仅当eternal=false对象不是永久有效时使用,可选属性,默认值是0,也就是可闲置时间无穷大。
timeToLiveSeconds:设置对象在失效前允许存活时间(单位:秒)。最大时间介于创建时间和失效时间之间。仅当eternal=false对象不是永久有效时使用,默认是0.,也就是对象存活时间无穷大。
overflowToDisk:当内存中对象数量达到maxElementsInMemory时,Ehcache将会对象写到磁盘中。
diskSpoolBufferSizeMB:这个参数设置DiskStore(磁盘缓存)的缓存区大小。默认是30MB。每个Cache都应该有自己的一个缓冲区。
maxElementsOnDisk:硬盘最大缓存个数。
diskPersistent:是否缓存虚拟机重启期数据 Whether the disk store persists between restarts of the Virtual Machine. The default value is false.
diskExpiryThreadIntervalSeconds:磁盘失效线程运行时间间隔,默认是120秒。
memoryStoreEvictionPolicy:当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存。默认策略是LRU(最近最少使用)。你可以设置为FIFO(先进先出)或是LFU(较少使用)。
clearOnFlush:内存数量最大时是否清除。
-->
3. 配置applicationContext.xml
4. 最后是写一个cacheservice
2. 配置ehcache
<?xml version="1.0" encoding="UTF-8"?> <ehcache> <diskStore path="java.io.tmpdir/hibernate/portal-ps" /> <defaultCache maxElementsInMemory="10000" memoryStoreEvictionPolicy="LRU" eternal="false" timeToIdleSeconds="300" timeToLiveSeconds="300" overflowToDisk="false" diskPersistent="false" /> <!-- cache for user setting --> <cache name="DISPLAY_CACHE" maxElementsInMemory="100000" overflowToDisk="false" eternal="false" maxElementsOnDisk="0" diskPersistent="false" timeToLiveSeconds="36000" timeToIdleSeconds="36000" memoryStoreEvictionPolicy="LRU" /> </ehcache>
<?xml version="1.0" encoding="UTF-8"?>
<ehcache>
<!--timeToIdleSeconds 当缓存闲置n秒后销毁 -->
<!--timeToLiveSeconds 当缓存存活n秒后销毁 -->
<!--
缓存配置
name:缓存名称。
maxElementsInMemory:缓存最大个数。
eternal:对象是否永久有效,一但设置了,timeout将不起作用。
timeToIdleSeconds:设置对象在失效前的允许闲置时间(单位:秒)。仅当eternal=false对象不是永久有效时使用,可选属性,默认值是0,也就是可闲置时间无穷大。
timeToLiveSeconds:设置对象在失效前允许存活时间(单位:秒)。最大时间介于创建时间和失效时间之间。仅当eternal=false对象不是永久有效时使用,默认是0.,也就是对象存活时间无穷大。
overflowToDisk:当内存中对象数量达到maxElementsInMemory时,Ehcache将会对象写到磁盘中。
diskSpoolBufferSizeMB:这个参数设置DiskStore(磁盘缓存)的缓存区大小。默认是30MB。每个Cache都应该有自己的一个缓冲区。
maxElementsOnDisk:硬盘最大缓存个数。
diskPersistent:是否缓存虚拟机重启期数据 Whether the disk store persists between restarts of the Virtual Machine. The default value is false.
diskExpiryThreadIntervalSeconds:磁盘失效线程运行时间间隔,默认是120秒。
memoryStoreEvictionPolicy:当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存。默认策略是LRU(最近最少使用)。你可以设置为FIFO(先进先出)或是LFU(较少使用)。
clearOnFlush:内存数量最大时是否清除。
-->
3. 配置applicationContext.xml
<bean id="defaultCacheManager" class="org.s 4000 pringframework.cache.ehcache.EhCacheManagerFactoryBean"> <property name="configLocation"> <value>classpath:ehcache/displayCache.xml</value> </property> </bean> <bean name="displayCache" class="org.springframework.cache.ehcache.EhCacheFactoryBean"> <property name="cacheManager"> <ref local="defaultCacheManager" /> </property> <property name="cacheName"> <value>DISPLAY_CACHE</value> </property> </bean>
4. 最后是写一个cacheservice
@Component public class CacheService { @Autowired @Resource(name="displayCache") private Cache <span style="font-family: Arial, Helvetica, sans-serif;">displayCache</span>; public void putCache(String user_ip,String displayName){ Element cacleElement = displayCache.get(user_ip); if(cacleElement == null){ cacleElement = new Element(user_ip,displayName); displayCache.put(cacleElement); } } public void updateCache(String user_ip,String displayName){ Element cacleElement = displayCache.get(user_ip); if(cacleElement != null){ displayCache.remove(user_ip); cacleElement = new Element(user_ip,displayName); displayCache.put(cacleElement); }else{ putCache(user_ip,displayName); } } public void deleteCache(String user_ip){ Element cacleElement = displayCache.get(user_ip); if(cacleElement != null){ displayCache.remove(user_ip); } } public Element getSections(String cid){ Object o = this.displayCache.get(cid); return (o==null?null:(Element)o); } public Object getCacheValue(String key){ Element cacleElement = displayCache.get(key); if(cacleElement!=null){ return cacleElement.getObjectValue(); }else{ return getDefaultDisplayField(); } } }
相关文章推荐
- java.util.Collection体系源码解读<四>AbstractList源码解读
- JAVA 文件下载 通过controller 转到指定地址
- javaWeb笔记(一) 反射
- JavaSE入门学习10:Java修饰符
- web项目中文乱码问题实践经验(springmvc +hibernate)
- CXF+Spring实现webservice
- 当执行gradle命令时出现JAVA_HOME设置无效的解决办法
- ubuntu下JAVA开发环境搭建及实例
- Java:使用synchronized和Lock对象获取对象锁
- java的参数是值传递而非引用传递
- Java中的Thread类创建多线程
- java.util.ResourceBundle使用详解
- java.lang.Exception: Socket bind failed: [730013] An attempt was made to acc
- Java中的Runnable接口
- java的锁机制
- SpringMVC的工作流程
- spring boot 异常处理
- JUnit 写 TestCase
- XML——XML Schema
- Java多线程之生产者与消费者