簡介
很久之前用IDEA寫springboot的時(shí)候,就發(fā)現(xiàn)了這個(gè)惡心的操作。今天想來解決一下。

上圖這樣寫就可以在IDEA中彈出提示信息,并且
ctrl+左鍵就可以跳到相對位置
ctrl+shift+鼠標(biāo)可以查看圖片內(nèi)容

但是運(yùn)行起來就訪問不了,顯示找不到該資源,原因也差不多知道
原因
在springboot的官方文檔中對于默認(rèn)靜態(tài)的文件的存放位置有明確的說明。如下:
By default Spring Boot will serve static content from a directory called /static (or /public or /resources or /META-INF/resources) in the classpath or from the root of the ServletContext
翻譯后的意思就是說默認(rèn)情況下,Spring Boot將在類路徑中或從ServletContext的根目錄中提供名為/ static(或/ public或/ resources或/ META-INF / resources)的目錄中的靜態(tài)內(nèi)容。也就是說默認(rèn)情況下,可以將靜態(tài)文件放到static,public,resources,/ META-INF / resources四個(gè)目錄下。
那么上面的路勁在springboot看來就是/static/static/img/time.jpg或/public/static/img/time.jpg或...也就是前面多加了一個(gè)文件夾的名字,我們?nèi)サ?code>/static就可以正常訪問了

但是去掉的話,我在IDEA中訪問就很惡心了,沒有提示,且不能跳轉(zhuǎn)

解決方案

spring.resources.static-locations=classpath:/
重新修改springboot提供的默認(rèn)資源存放路徑。
這里設(shè)計(jì)倆個(gè)資源路徑問題
spring.mvc.static-path-pattern和spring.resources.static-locations
-
spring.mvc.static-path-pattern代表的含義是我們應(yīng)該以什么樣的路徑來訪問靜態(tài)資源,換句話說,只有靜態(tài)資源滿足什么樣的匹配條件,Spring Boot才會(huì)處理靜態(tài)資源請求,以官方配置為例:
# 這表示只有靜態(tài)資源的訪問路徑為/resources/**時(shí),才會(huì)處理請求
spring.mvc.static-path-pattern=/resources/**,
假定采用默認(rèn)的配置端口,那么只有請求地址類似于http://localhost:8080/resources/jquery.js時(shí),Spring Boot才會(huì)處理此請求,處理方式是將根據(jù)模式匹配后的文件名查找本地文件,那么應(yīng)該在什么地方查找本地文件呢?這就是spring.resources.static-locations的作用了。
-
spring.resources.static-locations用于告訴Spring Boot應(yīng)該在何處查找靜態(tài)資源文件,這是一個(gè)列表性的配置,查找文件時(shí)會(huì)依賴于配置的先后順序依次進(jìn)行,默認(rèn)的官方配置如下:
spring.resources.static-locations=(為了好看才分行的)
classpath:/static,classpath:/public,classpath:/resources,classpath:/META-INF/resources
http://localhost:8080/resources/jquery.js就會(huì)在上述的四個(gè)路徑中依次查找是否存在“jquery.js”文件,如果找到了,則返回此文件,否則返回404錯(cuò)誤。
總結(jié)
spring.mvc.static-path-pattern用于闡述HTTP請求地址,而spring.resources.static-locations則用于描述靜態(tài)資源的存放位置