Spring Boot 使用JSP時(shí)扳剿,修改JSP不生效,需要重啟的現(xiàn)象
問(wèn)題描述
公司項(xiàng)目用的Spring Boot昼激,自己也就對(duì)他多研究一些庇绽,之前自己練習(xí)的Spring Boot項(xiàng)目,都是使用的JSP橙困,在修改后直接刷新頁(yè)面就可以看到效果敛劝,今天升級(jí)Spring Boot版本后,發(fā)現(xiàn)修改JSP后直接刷新頁(yè)面沒(méi)有用了纷宇。。蛾方。重啟才能生效像捶。上陕。。
問(wèn)題定位
什么問(wèn)題都抵不住愛(ài)折騰的心拓春,我原以為更換了IDE(試了試IDEA這個(gè)工具)導(dǎo)致的释簿,換回原來(lái)的Eclipse驚奇的發(fā)現(xiàn)也是無(wú)效的。
有想了想硼莽,覺(jué)得是不是因?yàn)樾薷腜OM文件添加了其他的jar包導(dǎo)致的(使用了shiro做權(quán)限庶溶,和redis做緩存),直接重新建一個(gè)Spring Boot項(xiàng)目懂鸵,寫(xiě)了最簡(jiǎn)單的Controller偏螺,發(fā)現(xiàn)還是不行。匆光。套像。嗶了狗了。
各種嘗試终息,想著難不成是Spring Boot版本升級(jí)導(dǎo)致的(從1.3.1升到了1.5.1)夺巩?換回1.3.1,擦周崭!真的可以了
問(wèn)題原因
百度柳譬。。续镇。木有答案美澳,看來(lái)遇到的問(wèn)題人還不多。磨取。人柿。
直接上stackoverflow,終于看到原因忙厌。在Spring Boot的GitHub上凫岖,有個(gè)大神(好吧,看來(lái)真的是很 牛 逼的大神)建議
spring-boot recompiles JSPs periodically leading to an unacceptable performance loss in production environments.
This behaviour is counter intuitive and hard to find.
The recompilation is behind a switch now but it's turned on (means it's in dev mode all the time).
I suggest to turn it off by default and enable it via the spring-boot-devtools.
The switch I am talking about is:
server.jsp-servlet.init-parameters.development
大致是說(shuō):spring-boot對(duì)JSP的重新編譯會(huì)導(dǎo)致不可接受性能降低在生產(chǎn)環(huán)境上逢净。找出這個(gè)現(xiàn)象是啥啥啥并且艱難的哥放。 。爹土。甥雕。
我建議默認(rèn)關(guān)閉并且通過(guò)spring-boot-devtools來(lái)開(kāi)啟它(指JSP修改后立即重新編譯) 。胀茵。社露。
而這個(gè)開(kāi)關(guān)我覺(jué)得可以是這樣的:
server.jsp-servlet.init-parameters.development
官方文檔:
JSP servlet
The JSP servlet is no longer in development mode by default.
Development mode is automatically enabled when using DevTools.
It can also be enabled explicitly by
setting server.jsp-servlet.init-parameters.development=true.
解決方案
好吧,廢話多了琼娘,解決方案如下
在配置文件application.properties中添加如下配置:
server:
jsp-servlet:
init-parameters:
development: true
解決問(wèn)題峭弟。