Springboot項目編譯后未能加載靜態(tài)資源文件的問題
Springboot項目編譯后未能加載靜態(tài)資源文件
起因
因甲方加了一個緊急的需求: 需要搞一個文件上傳和下載功能.
我心中想:這不簡單,搞個資源服務(wù)器,將上傳文件放上去,然后訪問資源鏈接就行了.
但接下來甲方爸爸說 不需要這莫麻煩,直接將文件放服務(wù)器里,用的時候下載到資源文件夾下就行.
我心里想: 我擦嘞 還能這樣!! 然后小心心翼翼的說 有資源服務(wù)器會更好的進(jìn)行統(tǒng)一管理,
說了些缺點..但人不想.哎! 那就擼代碼吧 結(jié)果就發(fā)生一個莫名奇妙的事情.
原因
idea中項目啟動,在將文件下載到資源路徑下時報問題如下:
class path resource [***] cannot be resolved to URL because it does not exist
資源文件找不到錯誤,我擦.
然后樓主就翻了下編譯后的文件夾
看到問題沒,這里竟然少了一個資源文件夾.可樓主都配置了啊
配置如下:
maven配置:

資源文件文件夾配置:

就很奇,為啥編譯后target->class下沒有static
然后樓主就開始了長達(dá)20分鐘的查找.百度的結(jié)果很亂,但都不能解決問題
最終樓主決定下去抽個煙?。?!
思考
下去抽煙時 樓主就思考.配置路徑正確,文件路徑也沒問題,為啥編譯后沒生成!
接下來樓主突然想到了種問題,會不會是資源文件下沒有資源 導(dǎo)致maven在進(jìn)行打包時會默認(rèn)過濾掉沒有資源的文件夾!
驗證

樓主在static文件夾下 扔了一個文件 編譯了下 然后就好使了.

就很神奇.
復(fù)盤
maven在編譯的時候 會過濾掉空文件夾,咱們在使用的時候 增加默認(rèn)文件就好
Springboot靜態(tài)資源加載不到,并且配置了也不生效
問題描述,以及歷程
寫項目的時候?qū)肓艘粋€前端項目,加載的時候發(fā)現(xiàn),竟然404,我估計就是沒掃描到靜態(tài)資源,我就跟之前一樣寫了一個配置類:
@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
? ? @Override
? ? protected void addResourceHandlers(ResourceHandlerRegistry registry) {
? ? ? ? registry.addResourceHandler("/**")
? ? ? ? ? ? ? ? .addResourceLocations("classpath:/static/")
? ? ? ? ? ? ? ? .addResourceLocations("classpath:/templates/");
? ? ? ? super.addResourceHandlers(registry);
? ? }
}然后發(fā)現(xiàn)也不生效,
我就去搜,發(fā)現(xiàn)了各種配置的方法,繼承這個類的,或者實現(xiàn)那個方法的,網(wǎng)上一搜一大堆,都不行,然后我又試了用配置文件配置,也就是yml,因為用的thymeleaf引擎模板的,所以,也配置了些thymeleaf的配置,能好點,起碼能訪問到首頁的html了,但是依然靜態(tài)資源加載不到,
還有說那個pom文件有那個過濾的,把那個刪了就好,我查過那個問題了,我沒有那個過濾的。
解決問題
經(jīng)過一下午的排查,與搜索,終于找到了解決方法:我用的springBoot版本的問題:2.6.x就會有問題,需要引入配置,才能生效:
Springboot-2.6.x所使用到的spring mvc-5.3.x 默認(rèn)的路徑匹配策略改變了:
Spring MVC 處理程序映射匹配請求路徑的默認(rèn)策略已從 AntPathMatcher 更改為PathPatternParser。所以我們得給他設(shè)置回去
spring: ? ? ? mvc: ? ? ? ? pathmatch: ? ? ? ? ? matching-strategy: ant_path_matcher
之后再使用前面的幾種方法就ok了,哪個生效用哪個。
或者,直接降boot的版本。
總結(jié)
如有錯誤或未考慮完全的地方,望不吝賜教
相關(guān)文章
Component和Configuration注解區(qū)別實例詳解
這篇文章主要為大家介紹了Component和Configuration注解區(qū)別實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
Java switch()括號內(nèi)參數(shù)的類型要求詳解
這篇文章主要介紹了Java switch()括號內(nèi)參數(shù)的類型要求,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10
java實現(xiàn)一次性壓縮多個文件到zip中的方法示例
這篇文章主要介紹了java實現(xiàn)一次性壓縮多個文件到zip中的方法,涉及java針對文件批量壓縮相關(guān)的文件判斷、遍歷、壓縮等操作技巧,需要的朋友可以參考下2019-09-09
spring boot + mybatis實現(xiàn)動態(tài)切換數(shù)據(jù)源實例代碼
這篇文章主要給大家介紹了關(guān)于spring boot + mybatis實現(xiàn)動態(tài)切換數(shù)據(jù)源的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-10-10
解決微服務(wù)中關(guān)于用戶token處理到的坑
這篇文章主要介紹了解決微服務(wù)中關(guān)于用戶token處理到的坑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08
jpa使用manyToOne(opntional=true)踩過的坑及解決
這篇文章主要介紹了jpa使用manyToOne(opntional=true)踩過的坑及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10

