為了應(yīng)對(duì)在SpringBoot中的高并發(fā)及優(yōu)化訪問(wèn)速度,我們一般會(huì)把頁(yè)面上的數(shù)據(jù)查詢(xún)出來(lái),然后放到redis中進(jìn)行緩存。減少數(shù)據(jù)庫(kù)的壓力。
在SpringBoot中一般使用
thymeleafViewResolver.getTemplateEngine().process("goodlist", ctx);
進(jìn)行頁(yè)面的渲染,而這個(gè)ctx就是SpringWebContext對(duì)象,我們一般進(jìn)行如下獲取:
SpringWebContext swc=new SpringWebContext(request,response,request.getServletContext(),request.getLocale(),model.asMap(),applicationContext);
在SpringBoot 1.X的版本中以上代碼可以使用。但在SpringBoot 2.0中,就無(wú)法找到SpringWebContext了。那應(yīng)該如何去解決這個(gè)問(wèn)題呢?
說(shuō)一下我的思路,.process方法中ctx所在參數(shù)所需要的類(lèi)型為接口IContext
也就是需要有實(shí)現(xiàn)了IContext的類(lèi)就可以了,然后進(jìn)入IContext接口找所有的實(shí)現(xiàn)類(lèi)
然后看到WebContext似乎有些像上面所用的SpringWebContext。即做出如下改變,完美實(shí)現(xiàn)了thymeleaf的頁(yè)面渲染。
WebContext ctx = new WebContext(request, response, request.getServletContext(), request.getLocale(), model.asMap());
html = thymeleafViewResolver.getTemplateEngine().process("goodlist", ctx);
在SpringBoot 2.0中使用上述代碼,可以完全替代。
(當(dāng)然在下不才,暫時(shí)只找到了這種辦法,在網(wǎng)絡(luò)上也沒(méi)找到對(duì)應(yīng)的比較不錯(cuò)的策略。所以分享出來(lái),以備分享出來(lái),幫助遇到此問(wèn)題的程序員們。如果大家有什么更好的處理辦法可以一起互相交流哦)
目前我正在搞基于SpringBoot、Redis、消息隊(duì)列的秒殺小項(xiàng)目,主要還是為了梳理如何解決高并發(fā)的問(wèn)題過(guò)程。
GitHub:https://github.com/iquanzhan/SecKillShop
歡迎點(diǎn)擊Start哦
所用技術(shù)
1.后端:SpringBoot、JSR303、MyBatis
2.前端:Thymeleaf、BootStrap、Jquery
3.中間件:RabbitMQ、Redis、Druid

