springboot 使用thymeleaf 完成頁面快取
阿新 • • 發佈:2019-01-09
直接看Demo
注入redisservice以及其餘兩個bean.
@Autowired
private RedisService redisService;
@Autowired
private ThymeleafViewResolver thymeleafViewResolver;
@Autowired
private WebApplicationContext applicationContext;
控制層:
@RequestMapping(value="/list",produces = "text/html;charset=utf-8") @ResponseBody public String showGoods(Model model, MiaoshaUser user, HttpServletRequest request, HttpServletResponse response){ //1.從redis快取中查詢 String listHtml = redisService.get("goosList",String.class); if(StringUtils.isNotEmpty(listHtml)){ return listHtml; } //2.使用thymeleaf模板引擎手動渲染檢視 List<MiaoshaGoods> goodsList = miaoshaGoodsService.selectAllMiaoshaGoods(); model.addAttribute("user",user); model.addAttribute("goodsList",goodsList); // 無法匯入SpringWebContext的包 SpringWebContext context = new SpringWebContext(request,response,request.getServletContext(),request.getLocale(),model.asMap(),applicationContext); String html = thymeleafViewResolver.getTemplateEngine().process("goods_list",context); //3.將手動渲染後的html存入redis快取 if(StringUtils.isNotEmpty(html)){ redisService.set("goosList",html); } return html; }
核心點是:
SpringWebContext context = new SpringWebContext(request,response,request.getServletContext(),request.getLocale(),model.asMap(),applicationContext);
String html = thymeleafViewResolver.getTemplateEngine().process("goods_list",context);