1. 下载ehcache-2.10.2.jar。 注意, 当时ehcache已经有版本3了。 但是建议下版本2。 下了3之后会出现null class的错误,无法解决。导入:ehcache-2.10.2.jar, slf4j-api,slf4j-jdk的相关jar文件。 ***下载ehcache-2.10的时候,下载的是整个发布包,里面就包括了上述3个jar包。 还需要spring-context-4.2.5.RELEASE.jar
spring-context-support-4.2.5.RELEASE.jar的导入。| 包导入结束。
2. ehcache.xml, 里面的代码如下:
<?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="d:\\temp"/>
<defaultCache
maxElementsInMemory="3000"
eternal="false"
timeToIdleSeconds="3600"
timeToLiveSeconds="3600"
overflowToDisk="true"
diskPersistent="false"
diskExpiryThreadIntervalSeconds="100"
memoryStoreEvictionPolicy="LRU"
/>
<cache name="myCache"
maxElementsInMemory="3000"
eternal="false"
overflowToDisk="true"
timeToIdleSeconds="36000"
timeToLiveSeconds="36000"
memoryStoreEvictionPolicy="LFU"
/>
<!--
eternal="false" // 元素是否永恒,如果是就永不过期(必须设置)
maxElementsInMemory="1000" // 缓存容量的内存最大值(必须设置)
overflowToDisk="false" // 当缓存达到maxElementsInMemory值是,是否允许溢出到磁盘(必须设置)
diskPersistent="false" // 磁盘缓存在VM重新启动时是否保持(默认为false)
timeToIdleSeconds="0" // 导致元素过期的访问间隔(秒为单位). 0表示可以永远空闲,默认为0
timeToLiveSeconds="600" // 元素在缓存里存在的时间(秒为单位). 0 表示永远存在不过期
memoryStoreEvictionPolicy="LFU" // 当达到maxElementsInMemory时,如何强制进行驱逐默认使用"最近使用(LRU)"策略,其它还有先入先出FIFO,最少使用LFU,较少使用LRU
-->
</ehcache>
在这里需要说明的是:
I. <diskStore path="d:\\temp"/> 中的目录可以是硬盘的文件目录。
II. <cache name="myCache"> 这个名字要记住。 这个需要在我们的daoImpl文件中需要做的缓存名
3. 在 springmvc.xml 文件中插入如下代码:
<cache:annotation-driven />
<bean id="cacheManager"
class="org.springframework.cache.ehcache.EhCacheCacheManager" p:cache-manager-ref="ehcache"/>
<!-- EhCache library setup -->
<bean id="ehcache"
class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" p:config-location="classpath:ehcache.xml"/>
该代码是在<beans></beans>标签中的末尾添加,包括 <cache:annotation-driven />。
4. 在相应的方法前添加如下:
@Cacheable("myCache")
public List<User> getRightUserList() {
该方式就将方法返回的list进行了缓存。