W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
WebMVC模塊已集成緩存模塊,通過@Cacheable注解即可輕松實(shí)現(xiàn)控制器方法的緩存,通過配置緩存模塊的scope_processor_class參數(shù)可以支持APPLICATION和SESSION作用域;
# 設(shè)置緩存作用域處理器 ymp.configs.cache.scope_processor_class=net.ymate.platform.webmvc.support.WebCacheScopeProcessor
示例代碼:將方法執(zhí)行結(jié)果以會話(SESSION)級別緩存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é)果對象,并不能緩存IView視圖的最終執(zhí)行結(jié)果;
WebMVC模塊提供了緩存處理器IWebCacheProcessor接口,可以讓開發(fā)者通過此接口對控制器執(zhí)行結(jié)果進(jìn)行最終處理,該接口作用于被聲明@ResponseCache注解的控制器類和方法上;
說明: 框架提供IWebCacheProcessor接口默認(rèn)實(shí)現(xiàn)
net.ymate.platform.webmvc.support.WebCacheProcessor
用以緩存視圖執(zhí)行結(jié)果,
但需要注意的是當(dāng)使用它時, 請檢查web.xml的過濾器DispatchFilter
中不要配置<dispatcher>INCLUDE</dispatcher>
,否則將會產(chǎn)生死循環(huán);
@ResponseCache注解參數(shù)說明:
cacheName:緩存名稱, 可選參數(shù), 默認(rèn)值為default;
key:緩存Key, 可選參數(shù), 若未設(shè)置則由IWebCacheProcessor接口實(shí)現(xiàn)自動生成;
processorClass:自定義視圖緩存處理器, 可選參數(shù),若未提供則采用默認(rèn)IWebCacheProcessor接口參數(shù)配置;
scope:緩存作用域, 可選參數(shù),可選值為APPLICATION、SESSION和DEFAULT,默認(rèn)為DEFAULT;
timeout:緩存數(shù)據(jù)超時時間, 可選參數(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緩存模塊使其對@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 { // 這里是對View視圖自定義處理邏輯... // 完整的示例代碼請查看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); } }
說明:該接口方法返回布爾值,用于通知WebMVC框架是否繼續(xù)處理控制器視圖;
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: