关键字: spring, 缓存
以EhCache为例说明缓存的配置方法:
第一种方法,配置Spring配置文件,使用AOP处理缓存
1)添加Provider,初始化CacheManager
- <!--
- 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>
2)在ehcache.xml增加一个缓存
增加一个name为testCache的缓存。
- <cache name="testCache"
- maxElementsInMemory="20000"
- maxElementsOnDisk="1000"
- eternal="true"
- overflowToDisk="true"
- memoryStoreEvictionPolicy="LFU"
- />
3)配置缓存
- <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>
其中(a)为第2步定义的cache的名字,(b)为需要缓存的bean的id。
这样,第一种方式就配置好了。
第二种方法,使用Annotations的配置方式。
1)同第一种方法1)。
2)同第二种方法2)。
3)在需要处理缓存的方法前面配置Annotion
@Cacheable(modelId="testCache")//写在方法前面就会缓存方法的返回结果
@CacheFlush(modelId="testFlushing")//写在方法前面,就会在执行该函数时清除缓存里面的数据。
这样第二种方法也完成了。
第一种方法在flush的时候可以同时flush多个缓存。第二种方法只能flush一个缓存,而且第一种方法只需要修改Spring配置文件即可。