开发者社区> 问答> 正文

Spring中ehcache配置拦截器缓存问题:报错

ehcache.xml

<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    
    xsi:noNamespaceSchemaLocation="ehcache.xsd" updateCheck="true"    
    monitoring="autodetect">
    <!-- 设置缓存文件 .data 的创建路径。
         如果该路径是 Java 系统参数,当前虚拟机会重新赋值。
         下面的参数这样解释:
         user.home – 用户主目录
         user.dir      – 用户当前工作目录
         java.io.tmpdir – 默认临时文件路径 -->
    <diskStore path="java.io.tmpdir"/>
    <!--缺省缓存配置。CacheManager 会把这些配置应用到程序中。
        下列属性是 defaultCache 必须的:
        maxInMemory           - 设定内存中创建对象的最大值。
        eternal                        - 设置元素(译注:内存中对象)是否永久驻留。如果是,将忽略超
                                              时限制且元素永不消亡。
        timeToIdleSeconds  - 设置某个元素消亡前的停顿时间。
                                              也就是在一个元素消亡之前,两次访问时间的最大时间间隔值。
                                              这只能在元素不是永久驻留时有效(译注:如果对象永恒不灭,则
                                              设置该属性也无用)。
                                              如果该值是 0 就意味着元素可以停顿无穷长的时间。
        timeToLiveSeconds - 为元素设置消亡前的生存时间。
                                               也就是一个元素从构建到消亡的最大时间间隔值。
                                               这只能在元素不是永久驻留时有效。
        overflowToDisk        - 设置当内存中缓存达到 maxInMemory 限制时元素是否可写到磁盘
                                               上。
        -->
    <defaultCache  
        maxElementsInMemory="1000"  
        eternal="false"  
        timeToIdleSeconds="120"  
        timeToLiveSeconds="120"  
        overflowToDisk="true"  
        /> 
    <cache name="eLearnCache"
        maxElementsInMemory="300"
        eternal="false"
        timeToIdleSeconds="5000"
        timeToLiveSeconds="5000"
        overflowToDisk="true"
        />
</ehcache>



Spring配置

<!-- ======================缓存 ======================= -->
	<!-- 引用ehCache的配置 -->  
    <bean id="defaultCacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
      <property name="shared" value="true"></property>
      <property name="configLocation">  
        <value>classpath:ehcache.xml</value>  
      </property>  
    </bean>  
      
    <!-- 定义ehCache的工厂,并设置所使用的Cache name -->  
    <bean id="ehCache" class="org.springframework.cache.ehcache.EhCacheFactoryBean">  
      <property name="cacheManager">  
        <ref local="defaultCacheManager"/>  
      </property>  
      <property name="cacheName">  
          <value>eLearnCache</value>  
      </property>  
    </bean>  
  
    <!-- find/create cache拦截器 -->  
    <bean id="methodCacheInterceptor" class="com.elearn.cache.MethodCacheInterceptor">  
      <property name="cache">  
        <ref local="ehCache" />  
      </property>  
    </bean>  
    <!-- flush cache拦截器 -->  
    <bean id="methodCacheAfterAdvice" class="com.elearn.cache.MethodCacheAfterAdvice">  
      <property name="cache">  
        <ref local="ehCache" />  
      </property>  
    </bean>  
      
    <bean id="methodCachePointCut" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">  
      <property name="advice">  
        <ref local="methodCacheInterceptor"/>  
      </property>  
      <property name="patterns">  
        <list>  
            <value>.*queryForLong.*</value>  
            <value>.*find.*</value>  
            <value>.*query.*</value>  
            <value>.*queryForInt.*</value>  
            <value>.*queryForRowSet.*</value>  
        </list>  
      </property>  
    </bean>  
    <bean id="methodCachePointCutAdvice" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">  
      <property name="advice">  
        <ref local="methodCacheAfterAdvice"/>  
      </property>  
      <property name="patterns">  
        <list>  
          <value>.*update.*</value>  
          <value>.*updateObject.*</value>  
          <value>.*batchUpdateObjectList.*</value>  
          <value>.*updateMap.*</value>  
          <value>.*batchUpdateListMap.*</value>  
          <value>.*batchUpdate.*</value>  
        </list>  
      </property>  
    </bean>



拦截器配置后,调用相关方法无法调用到ehcache缓存,麻烦各位大神给看看到底是什么地方的问题,第一次使用缓存框架!

展开
收起
kun坤 2020-06-06 18:06:48 603 0
1 条回答
写回答
取消 提交回答
  • 整个问题解决了吗?我也遇到了

    2020-06-06 18:07:00
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
基于英特尔 SSD 的虚拟机缓存解决SSD 立即下载
用户态高速块缓存方案 立即下载
高性能Web架构之缓存体系 立即下载

相关实验场景

更多