1. 程式人生 > >springboot 使用thymeleaf 完成頁面快取

springboot 使用thymeleaf 完成頁面快取

直接看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);