用Spring和EHCache实现方法结果缓存所注意的问题

      我们知道,Cache为ehcache.xml配置文件里面所定义的缓存类别,获取某一特定的缓存类别的方法如下:
                                       Cache cache= cacheManager.getCache(cacheName);
cacheName为想获取的缓存类别名。然后象下面方法把某一对象放入上面定义的缓存:
                                       cache.put(new Element(key,(Serializable)value));
key为 放入该缓存中的对象的索引值,value为放入该缓存中key所对应的对象。我们看到,放入缓存中的value必须序列化,Java原生类型 char、int ,原生类型的包装类String、Character、Integer、Number...和集合List的实现类ArrayList都已经实现了Serializable接口,它们都可以直接放到缓存中。这里要注意的是,在方法返回值中经常用到的Iterator,并没有实现Serializable接口,所以Cache 不能缓存返回值类型为Iterator的方法。
       还有一点要注意的是,如果我们要做缓存的方法是在bean的生命周期的初始化阶段调用的(例如setter,init),此时方法缓存拦截器还没被调用执行,那么缓存将不起作用,如做了下面的配置:
         <bean id="OrganizationManagerMethodCache" class="org.springframework.aop.framework.ProxyFactoryBean">
             <property name="target">
                   <bean class="com.wzj.rbac.ServiceFacade.OrganizationManager"  init-method="init" autowire="byName"/>     
             </property>
             <property name="interceptorNames">
                  <list>
                       <value>methodCachePointCut</value>
                 </list>
             </property>
          </bean>
      在init初始方法里面调用的缓存方法将失效。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值