用java啟動(dòng)spring boot項(xiàng)目,模版目錄無(wú)法正常訪問(wèn)

背景描述

由于想快速在服務(wù)器上部署一下spring boot的web應(yīng)用,因此使用了java直接啟動(dòng)spring boot內(nèi)置tomcat的方式來(lái)構(gòu)建服務(wù),實(shí)際上這也是spring boot的一個(gè)很大的亮點(diǎn)。
但是接著就遇到了一個(gè)很有意思的問(wèn)題,在項(xiàng)目中使用了Thymeleaf作為模版工具,使用運(yùn)行jar包的方式進(jìn)行項(xiàng)目啟動(dòng)的時(shí)候,訪問(wèn)頁(yè)面時(shí)出現(xiàn)了500錯(cuò)誤,原因?yàn)檎也坏侥0嫖募?br> 然后這一切在本地開(kāi)發(fā)的過(guò)程中并沒(méi)有出現(xiàn),這就讓人非常摸不到頭腦了。

問(wèn)題原因

后來(lái)經(jīng)過(guò)查證和摸索后,想到了可能會(huì)不會(huì)是在controller映射的時(shí)候,使用了錯(cuò)誤的映射地址呢?因?yàn)槲以谂渲媚0娴臅r(shí)候是這么寫的

# Prefix that gets prepended to view names when building a URL.
spring.thymeleaf.prefix=classpath:/templates/

而我在controller里面有的頁(yè)面寫成了這樣的,注意這里的return值,在路徑的最前面加了"/"

@RequestMapping("/admin/index")
private String adminIndex(ModelMap map){
    //TODO something
    return "/admin/index";
}

經(jīng)過(guò)嘗試修改之后,將多余的"/"去掉之后,一切就正常了。

因此這就非常有意思了,為什么同樣的代碼,我開(kāi)發(fā)啟動(dòng)的時(shí)候就沒(méi)有問(wèn)題,但是使用jar啟動(dòng)的時(shí)候就會(huì)有這個(gè)問(wèn)題呢。
對(duì)比了一下我通過(guò)使用mvn spring-boot:run啟動(dòng)服務(wù)和使用java -jar xx.jar啟動(dòng)服務(wù)時(shí)候的日志差異,發(fā)現(xiàn)前者使用的是target下面的classes文件下下面的內(nèi)容,實(shí)際上在啟動(dòng)中嘗試替換了文件下下面的靜態(tài)文件也確實(shí)生效了。而后者則是使用了jar包這個(gè)Archive下面的classes文件。

2016-07-07 14:44:21  [ main:0 ] - [ INFO ]  Starting Application on Lenovo-PC with PID 4320 (G:\java_workspace\xxx\target\classes started by zhf in G:\java_workspace\xxx)
2016-07-07 14:44:21  [ main:32 ] - [ DEBUG ]  Running with Spring Boot v1.3.2.RELEASE, Spring v4.2.4.RELEASE
[INFO ] 2016-07-07 14:50:55,844 method:org.springframework.boot.StartupInfoLogger.logStarting(StartupInfoLogger.java:48)
Starting Application v1.0.0-SNAPSHOT on Lenovo-PC with PID 8472 (G:\java_workspace\xxx\target\WebSite-1.0.0-SNAPSHOT.jar started by zhf in G:\java_workspace\xxx\target)
[DEBUG] 2016-07-07 14:50:55,849 method:org.springframework.boot.StartupInfoLogger.logStarting(StartupInfoLogger.java:51)
Running with Spring Boot v1.3.2.RELEASE, Spring v4.2.4.RELEASE

但造成這兩者的具體差異,還需要之后進(jìn)一步分析研究才能知道,目前先記錄下這個(gè)問(wèn)題,之后有時(shí)間了再進(jìn)一步進(jìn)行探索。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容