Spring Module---cache

项目需要缓存,google了一下,发现spring module有现成的东西可用,随即拿来看看。发现还是比较好用的。
改cache采用了aop的方式进行cache的写入和刷出。使用spring风格,上手容易。
系统负载不高,因此对于该缓存方法的性能等等不做评价,目前满足需要。
使用方法:
有这么几个概念需要提前知道1.XXCacheFacade,比如如果是oscache,那么XX就是oscachefacade.该类负责缓存的写入和刷出

None.gif < bean  id ="oscacheFacade"  class ="org.springmodules.cache.provider.oscache.OsCacheFacade" >   
None.gif    
< property  name ="failQuietlyEnabled"  value ="true" />   
None.gif    
< property  name ="cacheManager" >   
None.gif        
< bean  id ="oscacheManager"  class ="org.springmodules.cache.provider.oscache.OsCacheManagerFactoryBean" />   
None.gif    
</ property >   
None.gif  
</ bean >   


里面的cacheManager必须要有,改类负责提供底层具体的cache实现,比如oscache或者EHcache等。
2.MethodMapCachingInterceptor这个拦截器是官方提供的同类型的拦截器之一,根据方法名,参数匹配拦截。

None.gif < bean  id ="cachingInterceptor001"  class ="org.springmodules.cache.interceptor.caching.MethodMapCachingInterceptor" >   
None.gif    
< property  name ="cacheProviderFacade"  ref ="oscacheFacade" />   
None.gif    
< property  name ="cachingModels" >   
None.gif        
< props >   
None.gif            
< prop  key ="com.company.jncz.TestItIF.get*" > groups=aa;refreshPeriod=10 </ prop >   
None.gif            
< prop  key ="com.company.jncz.TestItIF.load*" > groups=bb;refreshPeriod=10 </ prop >   
None.gif        
</ props >   
None.gif    
</ property >   
None.gif  
</ bean >   


注意cachingModels。有两种方式写法,一种是上面看到的使用props另一种是使用Map.在有些情况下只能使用Map方式,下面解释

None.gif < map >   
None.gif  
< entry  key ="com.company.jncz.TestIt.get*" >   
None.gif    
< ref  local ="oscacheCachingModel" />   
None.gif  
</ entry >   
None.gif
</ map >   
None.gif

 

 

None.gif < bean  id ="oscacheCachingModel"  class ="org.springmodules.cache.provider.oscache.OsCacheCachingModel" >   
None.gif    
< property  name ="groups" >   
None.gif            
< list >   
None.gif               
< value > aa </ value >   
None.gif               
< value > bb </ value >   
None.gif            
</ list >   
None.gif       
</ property >   
None.gif    
< property  name ="refreshPeriod"  value ="10" />   
None.gif 
</ bean >   


尤其当groups(对于oscache来说是groups)的值不止一个的时候,就需要使用map的方式。
否则不生效(也许还有什么我没有注意到).另外需要注意的是对于model来说他的key很重要。有以下需要注意:如果AImpl是A接口的实现类,而且你在其他地方使用时都是用A接口来声明的,那么key就必须写成接口的全限定名比如:com.company.jncz.A.getXX,否则无法识别。

 

对于与cachingModel相对应的flushingModel写法是类似的,参考api很容易写出来。

最后

None.gif < bean  class ="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator" >   
None.gif        
< property  name ="beanNames" >   
None.gif            
< value > *Service </ value >   
None.gif        
</ property >   
None.gif        
< property  name ="interceptorNames" >   
None.gif            
< list >   
None.gif                
< value > cachingInterceptor001 </ value >   
None.gif                
< value > flushingInterceptor001 </ value >   
None.gif            
</ list >   
None.gif        
</ property >   
None.gif  
</ bean >   
None.gif  
< bean  id ="testService"  class ="com.company.jncz.TestItStub" />   
None.gif


这些不做介绍。
总之比较简单。这两天感冒,昏昏沉沉,不知道有没有表达清楚。。。。

 

自己看了一眼,的确没说清楚,要清楚的几个概念是cacheFacade.CachingModel.FlushingModel.CachingInterceptor.FlushingInterceptor.这些算是比较重要的。其他aop内容略。caching拦截器拦截某方法,根据cachingModel定义的规则由cacheFacade将之放入cache。flushing拦截器拦截到某方法,根据flushingModel定义的规则由cacheFacade将对应的cache清除。嗯,基本上流程就这样子了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值