标签:
本文参考:http://www.cnblogs.com/hoojo/archive/2012/07/12/2587556.html
Ehcache可以对页面、对象、数据进行缓存,同时支持集群/分布式缓存。如果整合Spring、Hibernate也非常的简单,Spring对Ehcache的支持也非常好。EHCache支持内存和磁盘的缓存,支持LRU、LFU和FIFO多种淘汰算法,支持分布式的Cache,可以作为Hibernate的缓存插件。同时它也能提供基于Filter的Cache,该Filter可以缓存响应的内容并采用Gzip压缩提高响应速度
一、准备工作
如果你的系统中已经成功加入Spring、Hibernate;那么你就可以进入下面Ehcache的准备工作。
1、 下载jar包
2、 需要添加如下jar包到lib目录下
ehcache-core-2.5.2.jar
ehcache-spring-annotations-1.2.0.jar----spring 3.0.5的,更细颗粒化的缓存设置,更方便的注解,可以具体到把每个方式的返回值做缓存, 需要 ehcache-spring-annotations-1.1.x。
3、 当前工程的src目录中加入配置文件
ehcache.xml
ehcache.xsd
这些配置文件在ehcache-core这个jar包中可以找到
<span style="font-size:18px;"><?xml version="1.0" encoding="UTF-8"?> <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd" updateCheck="false"> <diskStore path="java.io.tmpdir"/> <defaultCache eternal="false" maxElementsInMemory="1000" overflowToDisk="true" diskPersistent="false" timeToIdleSeconds="0" timeToLiveSeconds="600" memoryStoreEvictionPolicy="LRU"/> <pre style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; direction: ltr; color: black; font-size: 10pt; overflow: visible;"> <span style="color:#008000;"><!-- </span></span>
配置自定义缓存
maxElementsInMemory:缓存中允许创建的最大对象数
eternal:缓存中对象是否为永久的,如果是,超时设置将被忽略,对象从不过期。
timeToIdleSeconds:缓存数据的钝化时间,也就是在一个元素消亡之前,
两次访问时间的最大时间间隔值,这只能在元素不是永久驻留时有效,
如果该值是 0 就意味着元素可以停顿无穷长的时间。
timeToLiveSeconds:缓存数据的生存时间,也就是一个元素从构建到消亡的最大时间间隔值,
这只能在元素不是永久驻留时有效,如果该值是0就意味着元素可以停顿无穷长的时间。
overflowToDisk:内存不足时,是否启用磁盘缓存。
memoryStoreEvictionPolicy:缓存满了之后的淘汰算法。
-->
<cache name="Cache1" eternal="false" maxElementsInMemory="100" overflowToDisk="true" diskPersistent="false" timeToIdleSeconds="0" timeToLiveSeconds="600" memoryStoreEvictionPolicy="LRU"/> <cache name="Cache2" eternal="true" maxElementsInMemory="1000"
overflowToDisk="true" diskPersistent="false" memoryStoreEvictionPolicy="LRU"/></ehcache><span style="font-size:18px;">@Service public class CacheManagerImpl implements CacheManager{ private static List<net.sf.ehcache.CacheManager> CACHE_MANAGERS = net.sf.ehcache.CacheManager.ALL_CACHE_MANAGERS; Log logger = LogFactory.getLog(CacheManagerImpl.class); /** * 删除指定缓存中的内容 cacheName 为 null 表示清除所有缓存内的内容 * @param cacheName 缓存名称 * @return */ public boolean remove(String cacheName) { try{ if(CACHE_MANAGERS != null){ for(net.sf.ehcache.CacheManager cacheManager: CACHE_MANAGERS){ if("".equals(cacheName) || cacheName == null){ String[] cacheNames = cacheManager.getCacheNames(); if(cacheNames != null){ for(String cache : cacheNames){ if(cacheManager.cacheExists(cache)){ cacheManager.getCache(cache).removeAll(); } } } }else{ if(cacheManager.cacheExists(cacheName)){ cacheManager.getCache(cacheName).removeAll(); } } } } }catch(Exception e){ logger.error("删除指定缓存中的内容失败!cacheName=" + cacheName); return false; } return true; } }</span>Spring配置文件applicationContext.xml中配置ecache
<span style="font-size:18px;"><pre name="code" class="html">1.配置缓存bean,要注意的是:ehcache缓存是做带DAO这一层,所以应把这一段配置和dao实例化放在同一个配置文件里面 <?xml version="1.0" encoding="UTF-8" ?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:lang="http://www.springframework.org/schema/lang" xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:util="http://www.springframework.org/schema/util" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:ehcache="http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring" xsi:schemaLocation="http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring/ehcache-spring-1.2.xsd" default-autowire="byName"> ....................... <!-- 解添方式添加缓存 --> <ehcache:annotation-driven cache-manager="ehCacheManager" /> <bean id="ehCacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"> <property name="configLocation" value="classpath:ehcache.xml" /> </bean></span>
标签:
原文地址:http://blog.csdn.net/sweetgirl520/article/details/51363199