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

关键字: spring, 缓存

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

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

1)添加Provider,初始化CacheManager

Xml代码
  1. <!--  
  2. Thecreatedcachemanagerisaninstanceofnet.sf.ehcache.CacheManager  
  3. -->  
  4. <beanidbeanid="cacheManager"  
  5. class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">  
  6. </bean>  
  7. <beanidbeanid="cacheProviderFacade"  
  8. class="org.springmodules.cache.provider.ehcache.EhCacheFacade">  
  9. <propertynamepropertyname="cacheManager"ref="cacheManager"/>  
  10. </bean>  

 2)在ehcache.xml增加一个缓存

增加一个name为testCache的缓存。

Xml代码
  1. <cache name="testCache"  
  2.            maxElementsInMemory="20000"  
  3.            maxElementsOnDisk="1000"  
  4.            eternal="true"  
  5.            overflowToDisk="true"  
  6.            memoryStoreEvictionPolicy="LFU"  
  7.     />  

 

 

3)配置缓存

Xml代码
  1. <bean id="testService"  
  2.  class="org.springmodules.cache.interceptor.proxy.CacheProxyFactoryBean">  
  3.  <property name="cacheProviderFacade" ref="cacheProviderFacade" />  
  4.  <property name="cachingModels">  
  5.   <props>  
  6.    <prop key="find*">cacheName=<STRONG>testCache(a)</STRONG></prop>  
  7.    <prop key="is*">cacheName=testCache</prop>  
  8.   </props>  
  9.  </property>  
  10.  <property name="flushingModels">  
  11.   <props>  
  12.    <prop key="insert*">cacheNames=testCache</prop>  
  13.    <prop key="delete*">cacheNames=testCache</prop>  
  14.    <prop key="update*">cacheNames=testCache</prop>  
  15.   </props>  
  16.  </property>  
  17.  <property name="target" ref="<STRONG>testServiceTarget(b)</STRONG>" />  
  18. </bean>  

 

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

 

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

 

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

1)同第一种方法1)。

2)同第二种方法2)。

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

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

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

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

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

你可能感兴趣的:(Spring Module下配置缓存的两种方法)