<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    paulwong

    Spring Module---cache

    項目需要緩存,google了一下,發現spring module有現成的東西可用,隨即拿來看看。發現還是比較好用的。
    改cache采用了aop的方式進行cache的寫入和刷出。使用spring風格,上手容易。
    系統負載不高,因此對于該緩存方法的性能等等不做評價,目前滿足需要。
    使用方法:
    有這么幾個概念需要提前知道1.XXCacheFacade,比如如果是oscache,那么XX就是oscachefacade.該類負責緩存的寫入和刷出

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


    里面的cacheManager必須要有,改類負責提供底層具體的cache實現,比如oscache或者EHcache等。
    2.MethodMapCachingInterceptor這個攔截器是官方提供的同類型的攔截器之一,根據方法名,參數匹配攔截。

    <bean id="cachingInterceptor001" class="org.springmodules.cache.interceptor.caching.MethodMapCachingInterceptor">  
        
    <property name="cacheProviderFacade" 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" class="org.springmodules.cache.provider.oscache.OsCacheCachingModel">  
        
    <property name="groups">  
                
    <list>  
                   
    <value>aa</value>  
                   
    <value>bb</value>  
                
    </list>  
           
    </property>  
        
    <property name="refreshPeriod" value="10"/>  
     
    </bean>  


    尤其當groups(對于oscache來說是groups)的值不止一個的時候,就需要使用map的方式。
    否則不生效(也許還有什么我沒有注意到).另外需要注意的是對于model來說他的key很重要。有以下需要注意:如果AImpl是A接口的實現類,而且你在其他地方使用時都是用A接口來聲明的,那么key就必須寫成接口的全限定名比如:com.company.jncz.A.getXX,否則無法識別。

     

    對于與cachingModel相對應的flushingModel寫法是類似的,參考api很容易寫出來。

    最后

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


    這些不做介紹。
    總之比較簡單。這兩天感冒,昏昏沉沉,不知道有沒有表達清楚。。。。

     

    自己看了一眼,的確沒說清楚,要清楚的幾個概念是cacheFacade.CachingModel.FlushingModel.CachingInterceptor.FlushingInterceptor.這些算是比較重要的。其他aop內容略。caching攔截器攔截某方法,根據cachingModel定義的規則由cacheFacade將之放入cache。flushing攔截器攔截到某方法,根據flushingModel定義的規則由cacheFacade將對應的cache清除。嗯,基本上流程就這樣子了。

    posted on 2007-07-16 17:01 paulwong 閱讀(1397) 評論(0)  編輯  收藏 所屬分類: J2EE

    主站蜘蛛池模板: 又黄又爽一线毛片免费观看| 亚洲国产最大av| 国产猛男猛女超爽免费视频| 亚洲人成无码www久久久| 亚洲爆乳无码精品AAA片蜜桃| 日本片免费观看一区二区| 亚洲色欲或者高潮影院| 99re6在线视频精品免费下载| 亚洲人成网77777色在线播放| 中文在线免费看视频| 亚洲综合在线另类色区奇米| 三年在线观看免费观看完整版中文 | 视频一区二区三区免费观看| 在线观看永久免费视频网站| 国产精品亚洲а∨无码播放麻豆| 国产又粗又长又硬免费视频| 黄页网址在线免费观看| 亚洲男人在线无码视频| a级片免费在线播放| 亚洲一区免费观看| 日本黄网站动漫视频免费| 亚洲成人黄色网址| 成人免费在线视频| 狠狠综合亚洲综合亚洲色| heyzo亚洲精品日韩| 美女视频黄a视频全免费网站一区| 亚洲精品国产高清嫩草影院| 伊人免费在线观看| 久久精品国产亚洲av水果派| 99久久综合国产精品免费| 亚洲hairy多毛pics大全| 免费一级大黄特色大片| 成人免费ā片在线观看| 无码乱人伦一区二区亚洲一| 亚洲黄色免费网址| 亚洲人成色4444在线观看| 亚洲精品国产自在久久| 久久免费精品视频| 亚洲免费黄色网址| 四虎国产精品免费久久影院| 中文字幕一区二区三区免费视频|