Spring Module---cache
项目需要缓存,google了一下,发现spring module有现成的东西可用,随即拿来看看。发现还是比较好用的。
改cache采用了aop的方式进行cache的写入和刷出。使用spring风格,上手容易。
系统负载不高,因此对于该缓存方法的性能等等不做评价,目前满足需要。
使用方法:
有这么几个概念需要提前知道1.XXCacheFacade,比如如果是oscache,那么XX就是oscachefacade.该类负责缓存的写入和刷出
<bean id="oscacheFacade" value="true"/> <property name="cacheManager"> <bean id="oscacheManager" name="code"><bean id="cachingInterceptor001" ref="oscacheFacade"/> <property name="cachingModels"> <props> <prop key="com.company.jncz.TestItIF.get*">groups=aa;refreshPeriod=10</prop> <prop key="com.company.jncz.TestItIF.load*">groups=bb;refreshPeriod=10</prop> </props> </property> </bean>
注意cachingModels。有两种方式写法,一种是上面看到的使用props另一种是使用Map.在有些情况下只能使用Map方式,下面解释
<map> <entry key="com.company.jncz.TestIt.get*"> <ref local="oscacheCachingModel"/> </entry> </map>
<bean id="oscacheCachingModel" value="10"/> </bean>
尤其当groups(对于oscache来说是groups)的值不止一个的时候,就需要使用map的方式。
否则不生效(也许还有什么我没有注意到).另外需要注意的是对于model来说他的key很重要。有以下需要注意:如果AImpl是A接口的实现类,而且你在其他地方使用时都是用A接口来声明的,那么key就必须写成接口的全限定名比如:com.company.jncz.A.getXX,否则无法识别。
对于与cachingModel相对应的flushingModel写法是类似的,参考api很容易写出来。
最后
<bean value="METHOD_CACHE" />
</bean>
</entry>
</map>
</property>
get*是不可以的,异常:'get*' is not a fully qualified name 2 楼 MiMiEye 2007-07-02 收藏一下,有空的时候研究一下下... 3 楼 tom.duan 2007-07-02 getXXXList的意思是?
前三个字母是get,后四个字母是List?
我有一个用ehCache实现的方案,还算比较简单实用,两个拦截器,一个负责create/find cache,另外一个在数据insert/update/delete时候负责update cache(flush),如果有兴趣,我发上代码来大家讨论或则改进一下。 4 楼 commanderhyk 2007-07-04 ok贴出来大家研究一下. 5 楼 tom.duan 2007-07-06 我没有用SpringModule里面的解决方案,更简单一些,在整理了,稍后发上去!