Spring集成Ehcache[整理]

本文介绍了如何在Spring中集成Ehcache进行方法结果缓存。通过设置拦截器使用'METHOD_CACHE'区域,并利用Spring IoC使bean能够访问该区域。默认情况下,所有方法返回值都将被缓存。同时,缓存键的生成会考虑方法参数,确保参数变化时缓存更新。
摘要由CSDN通过智能技术生成

网络译文:

导言
从 Spring 1.1.1 开始, EHCache 就作为一种通用缓存解决方案集成进 Spring。
我将示范拦截器的例子,它能把方法返回的结果缓存起来。
 
利用 Spring IoC 配置 EHCache
在 Spring 里配置 EHCache 很简单。你只需一个 ehcache.xml 文件,该文件用于配置 EHCache:
< ehcache >

    
<! —设置缓存文件 .data 的创建路径。

         如果该路径是 Java 系统参数,当前虚拟机会重新赋值。

         下面的参数这样解释:
         user.home – 用户主目录
         user.dir      – 用户当前工作目录
         java.io.tmpdir – 默认临时文件路径 --
>
    
< diskStore  path ="java.io.tmpdir" />


    
<! —缺省缓存配置。CacheManager 会把这些配置应用到程序中。

        下列属性是 defaultCache 必须的:

        maxInMemory           - 设定内存中创建对象的最大值。
        eternal                        - 设置元素(译注:内存中对象)是否永久驻留。如果是,将忽略超
                                              时限制且元素永不消亡。
        timeToIdleSeconds  - 设置某个元素消亡前的停顿时间。
                                              也就是在一个元素消亡之前,两次访问时间的最大时间间隔值。
                                              这只能在元素不是永久驻留时有效(译注:如果对象永恒不灭,则
                                              设置该属性也无用)。
                                              如果该值是 0 就意味着元素可以停顿无穷长的时间。
        timeToLiveSeconds - 为元素设置消亡前的生存时间。
                                               也就是一个元素从构建到消亡的最大时间间隔值。
                                               这只能在元素不是永久驻留时有效。
        overflowToDisk        - 设置当内存中缓存达到 maxInMemory 限制时元素是否可写到磁盘
                                               上。
        --
>

    
< cache  name ="org.taha.cache.METHOD_CACHE"
        maxElementsInMemory
="300"
        eternal
="false"
        timeToIdleSeconds
="500"
        timeToLiveSeconds
="500"
        overflowToDisk
="true"
        
/>
</ ehcache >

拦截器将使用 org.taha.cache.METHOD_CACHE区域缓存方法返回结果。下面利用 Spring IoC bean 来访问这一区域。

<!--  ======================   缓存   =======================  -->

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

< bean  id ="methodCache"  class ="org.springframework.cache.ehcache.EhCacheFactoryBean" >
  
< property  name ="cacheManager" >
    
< ref  local ="cacheManager" />
  
</ property >
  
< property  name ="cacheName" >
    
< value > org.taha.cache.METHOD_CACHE </ value >
  
</ property >
</ bean >
 
构建我们的 MethodCacheInterceptor
该拦截器实现 org.aopalliance.intercept.MethodInterceptor接口。一旦运行起来(kicks-in),它首先检查被拦截方法是否被配置为可缓存的。这将可选择性的配置想要缓存的 bean 方法。只要调用的方法配置为可缓存,拦截器将为该方法生成 cache key 并检查该方法返回的结果是否已缓存。如果已缓存,就返回缓存的结果,否则再次调用被拦截方法,并缓存结果供下次调用。
 
com.ph.serviceportal.infoboard.util.MethodCacheInterceptor
 
package  com.ph.serviceportal.infoboard.util;

import  java.io.Serializable;

import  net.sf.ehcache.Cache;
import  net.sf.ehcache.Element;

import  org.aopalliance.intercept.MethodInterceptor;
import  org.aopalliance.intercept.MethodInvocation;
import
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值