`
chengyue2007
  • 浏览: 1471245 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

Spring Module下配置缓存的两种方法

阅读更多

以EhCache为例说明缓存的配置方法:

第一种方法,配置Spring配置文件,使用AOP处理缓存

1)添加Provider,初始化CacheManager

Xml代码
<!--  
Thecreatedcachemanagerisaninstanceofnet.sf.ehcache.CacheManager  
-->  
<beanidbeanid="cacheManager"  
class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">  
</bean>  
<beanidbeanid="cacheProviderFacade"  
class="org.springmodules.cache.provider.ehcache.EhCacheFacade">  
<propertynamepropertyname="cacheManager"ref="cacheManager"/>  
</bean>  
<!--
Thecreatedcachemanagerisaninstanceofnet.sf.ehcache.CacheManager
-->
<beanid="cacheManager"
class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
</bean>
<beanid="cacheProviderFacade"
class="org.springmodules.cache.provider.ehcache.EhCacheFacade">
<propertyname="cacheManager"ref="cacheManager"/>
</bean> 2)在ehcache.xml增加一个缓存

增加一个name为testCache的缓存。

Xml代码
<cache name="testCache"  
           maxElementsInMemory="20000"  
           maxElementsOnDisk="1000"  
           eternal="true"  
           overflowToDisk="true"  
           memoryStoreEvictionPolicy="LFU"  
    />  
<cache name="testCache"
           maxElementsInMemory="20000"
           maxElementsOnDisk="1000"
           eternal="true"
           overflowToDisk="true"
           memoryStoreEvictionPolicy="LFU"
    />3)配置缓存

Xml代码
<bean id="testService"  
 class="org.springmodules.cache.interceptor.proxy.CacheProxyFactoryBean">  
 <property name="cacheProviderFacade" ref="cacheProviderFacade" />  
 <property name="cachingModels">  
  <props>  
   <prop key="find*">cacheName=<STRONG>testCache(a)</STRONG></prop>  
   <prop key="is*">cacheName=testCache</prop>  
  </props>  
 </property>  
 <property name="flushingModels">  
  <props>  
   <prop key="insert*">cacheNames=testCache</prop>  
   <prop key="delete*">cacheNames=testCache</prop>  
   <prop key="update*">cacheNames=testCache</prop>  
  </props>  
 </property>  
 <property name="target" ref="<STRONG>testServiceTarget(b)</STRONG>" />  
</bean>  
 <bean id="testService"
  class="org.springmodules.cache.interceptor.proxy.CacheProxyFactoryBean">
  <property name="cacheProviderFacade" ref="cacheProviderFacade" />
  <property name="cachingModels">
   <props>
    <prop key="find*">cacheName=testCache(a)</prop>
    <prop key="is*">cacheName=testCache</prop>
   </props>
  </property>
  <property name="flushingModels">
   <props>
    <prop key="insert*">cacheNames=testCache</prop>
    <prop key="delete*">cacheNames=testCache</prop>
    <prop key="update*">cacheNames=testCache</prop>
   </props>
  </property>
  <property name="target" ref="testServiceTarget(b)" />
 </bean>

其中(a)为第2步定义的cache的名字,(b)为需要缓存的bean的id。

这样,第一种方式就配置好了。

第二种方法,使用Annotations的配置方式。

1)同第一种方法1)。

2)同第二种方法2)。

3)在需要处理缓存的方法前面配置Annotion

@Cacheable(modelId="testCache")//写在方法前面就会缓存方法的返回结果

@CacheFlush(modelId="testFlushing")//写在方法前面,就会在执行该函数时清除缓存里面的数据。

这样第二种方法也完成了。

第一种方法在flush的时候可以同时flush多个缓存。第二种方法只能flush一个缓存,而且第一种方法只需要修改Spring配置文件即可。

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/pengchua/archive/2009/08/02/4401136.aspx

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics