W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
WebMVC模塊已集成緩存模塊,通過(guò)@Cacheable注解即可輕松實(shí)現(xiàn)控制器方法的緩存,通過(guò)配置緩存模塊的scope_processor_class參數(shù)可以支持APPLICATION和SESSION作用域;
# 設(shè)置緩存作用域處理器 ymp.configs.cache.scope_processor_class=net.ymate.platform.webmvc.support.WebCacheScopeProcessor
示例代碼:將方法執(zhí)行結(jié)果以會(huì)話(SESSION)級(jí)別緩存180秒;
@Controller @RequestMapping("/demo") @Cacheable public class CacheController { @RequestMapping("/cache") @Cacheable(scope = ICaches.Scope.SESSION, timeout = 180) public IView doCacheable(@RequestParam String content) throws Exception { // ...... return View.textView("Content: " + content); } }
注意:基于@Cacheable的方法緩存只是緩存控制器方法返回的結(jié)果對(duì)象,并不能緩存IView視圖的最終執(zhí)行結(jié)果;
WebMVC模塊提供了緩存處理器IWebCacheProcessor接口,可以讓開發(fā)者通過(guò)此接口對(duì)控制器執(zhí)行結(jié)果進(jìn)行最終處理,該接口作用于被聲明@ResponseCache注解的控制器類和方法上;
說(shuō)明: 框架提供IWebCacheProcessor接口默認(rèn)實(shí)現(xiàn)
net.ymate.platform.webmvc.support.WebCacheProcessor
用以緩存視圖執(zhí)行結(jié)果,
但需要注意的是當(dāng)使用它時(shí), 請(qǐng)檢查web.xml的過(guò)濾器DispatchFilter
中不要配置<dispatcher>INCLUDE</dispatcher>
,否則將會(huì)產(chǎn)生死循環(huán);
@ResponseCache注解參數(shù)說(shuō)明:
cacheName:緩存名稱, 可選參數(shù), 默認(rèn)值為default;
key:緩存Key, 可選參數(shù), 若未設(shè)置則由IWebCacheProcessor接口實(shí)現(xiàn)自動(dòng)生成;
processorClass:自定義視圖緩存處理器, 可選參數(shù),若未提供則采用默認(rèn)IWebCacheProcessor接口參數(shù)配置;
scope:緩存作用域, 可選參數(shù),可選值為APPLICATION、SESSION和DEFAULT,默認(rèn)為DEFAULT;
timeout:緩存數(shù)據(jù)超時(shí)時(shí)間, 可選參數(shù),數(shù)值必須大于等于0,為0表示默認(rèn)緩存300秒;
useGZip:是否使用GZIP壓縮, 默認(rèn)值為true
默認(rèn)IWebCacheProcessor接口參數(shù)配置:
# 緩存處理器,可選參數(shù) ymp.configs.webmvc.cache_processor_class=demo.WebCacheProc
框架默認(rèn)提供了該接口的實(shí)現(xiàn)類:
net.ymate.platform.webmvc.support.WebCacheProcessor
- 基于Cache緩存模塊使其對(duì)@ResponseCache注解中的Scope.DEFAULT作用域支持Last-Modified等瀏覽器相關(guān)配置,并支持GZIP壓縮等特性
示例代碼:
package demo; import net.ymate.platform.webmvc.*; import net.ymate.platform.webmvc.view.IView; public class WebCacheProc implements IWebCacheProcessor { public boolean processResponseCache(IWebMvc owner, ResponseCache responseCache, IRequestContext requestContext, IView resultView) throws Exception { // 這里是對(duì)View視圖自定義處理邏輯... // 完整的示例代碼請(qǐng)查看net.ymate.platform.webmvc.support.WebCacheProcessor類源碼 return false; } } @Controller @RequestMapping("/demo") public class CacheController { @RequestMapping("/cache") @ResponseCache public IView doCacheable(@RequestParam String content) throws Exception { // ...... return View.textView("Content: " + content); } }
說(shuō)明:該接口方法返回布爾值,用于通知WebMVC框架是否繼續(xù)處理控制器視圖;
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: