SpringMVC中ehcache缓存

SpringMVC配置ehcache缓存

1、添加包

	<!-- ehcache -->
    <dependency>
      <groupId>net.sf.ehcache</groupId>
      <artifactId>ehcache-core</artifactId>
      <version>2.4.3</version>
    </dependency>
    <dependency> 
      <groupId>com.googlecode.ehcache-spring-annotations</groupId>
      <artifactId>ehcache-spring-annotations</artifactId> 
      <version>1.2.0</version> 
    </dependency> 
    <dependency>
      <groupId>com.google.collections</groupId>
      <artifactId>google-collections</artifactId>
      <version>1.0</version>
    </dependency>

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">  
      
    <diskStore path="user.home/web_ehcache/" />   
      
    <defaultCache  
            maxElementsInMemory="3000"  
            eternal="false"  
            timeToIdleSeconds="3600"  
            timeToLiveSeconds="3600"  
            overflowToDisk="true"  
            diskPersistent="false"  
            diskExpiryThreadIntervalSeconds="100"  
            memoryStoreEvictionPolicy="LRU"  
            />  
    <cache name="testCache"  
           maxElementsInMemory="3000"  
           eternal="false"  
           overflowToDisk="true"  
           timeToIdleSeconds="36000"  
           timeToLiveSeconds="36000"  
           memoryStoreEvictionPolicy="LFU"  
            />  
</ehcache>   
3、新建ehcacheApplication.xml,同时引入 ehcache.xml
<?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:ehcache="http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring"  
    xsi:schemaLocation="  
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
    http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring/ehcache-spring-1.1.xsd">
                                       
    <ehcache:annotation-driven />  
      
    <ehcache:config cache-manager="cacheManager">  

    </ehcache:config>  
      
    <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">  
        <property name="configLocation"  value="classpath:ehcache.xml"/>  
    </bean>

  <!--缓存的生成key-->
   <!--  <bean id="productKeyGenerator" class="lwz.web.ehcache.ProductCacheKeyGenerator"/>     -->
      
</beans>  
4、在web.xml中引入ehcacheApplication.xml

	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:ehcacheApplication.xml</param-value>
	</context-param>
5,以上配置完成,在需要缓存的DAO中加入@Cacheable

@Cacheable(cacheName="testCache")
	List<DzZgckAccArea> selectUser();
6、ehcache.xml配置属性

 <diskStore>==========当内存缓存中对象数量超过maxElementsInMemory时,将缓存对象写到磁盘缓存中(需对象实现序列化接口) 
 <diskStore path= "" >==用来配置磁盘缓存使用的物理路径,Ehcache磁盘缓存使用的文件后缀名是*.data和*.index 
 name=================缓存名称,cache的唯一标识(ehcache会把这个cache放到HashMap里) 
 maxElementsOnDisk====磁盘缓存中最多可以存放的元素数量, 0 表示无穷大 
 maxElementsInMemory==内存缓存中最多可以存放的元素数量,若放入Cache中的元素超过这个数值,则有以下两种情况 
               1 )若overflowToDisk= true ,则会将Cache中多出的元素放入磁盘文件中 
               2 )若overflowToDisk= false ,则根据memoryStoreEvictionPolicy策略替换Cache中原有的元素 
 eternal==============缓存中对象是否永久有效,即是否永驻内存, true 时将忽略timeToIdleSeconds和timeToLiveSeconds 
 timeToIdleSeconds====缓存数据在失效前的允许闲置时间(单位:秒),仅当eternal= false 时使用,默认值是 0 表示可闲置时间无穷大,此为可选属性,即访问这个cache中元素的最大间隔时间,若超过这个时间没有访问此Cache中的某个元素,那么此元素将被从Cache中清除 
 timeToLiveSeconds====缓存数据在失效前的允许存活时间(单位:秒),仅当eternal= false 时使用,默认值是 0 表示可存活时间无穷大,即Cache中的某元素从创建到清楚的生存时间,也就是说从创建开始计时,当超过这个时间时,此元素将从Cache中清除 
 overflowToDisk=======内存不足时,是否启用磁盘缓存(即内存中对象数量达到maxElementsInMemory时,Ehcache会将对象写到磁盘中),会根据标签中path值查找对应的属性值,写入磁盘的文件会放在path文件夹下,文件的名称是cache的名称,后缀名是data 
 diskPersistent=======是否持久化磁盘缓存,当这个属性的值为 true 时,系统在初始化时会在磁盘中查找文件名为cache名称,后缀名为index的文件,这个文件中存放了已经持久化在磁盘中的cache的index,找到后会把cache加载到内存,要想把cache真正持久化到磁盘,写程序时注意执行net.sf.ehcache.Cache.put(Element element)后要调用flush()方法。
 diskExpiryThreadIntervalSeconds==磁盘缓存的清理线程运行间隔,默认是 120 秒。
 diskSpoolBufferSizeMB============设置DiskStore(磁盘缓存)的缓存区大小,默认是30MB。
 memoryStoreEvictionPolicy========内存存储与释放策略,即达到maxElementsInMemory限制时,Ehcache会根据指定策略清理内存,共有三种策略,分别为LRU(最近最少使用)、LFU(最常用的)、FIFO(先进先出)。
7、参考链接

Ehcache 使用

Spring-Cache key设置注意事项




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值