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

資源文件文件夾配置:

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

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

就很神奇.
復盤
maven在編譯的時候 會過濾掉空文件夾,咱們在使用的時候 增加默認文件就好
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 默認的路徑匹配策略改變了:
Spring MVC 處理程序映射匹配請求路徑的默認策略已從 AntPathMatcher 更改為PathPatternParser。所以我們得給他設置回去
spring: ? ? ? mvc: ? ? ? ? pathmatch: ? ? ? ? ? matching-strategy: ant_path_matcher
之后再使用前面的幾種方法就ok了,哪個生效用哪個。
或者,直接降boot的版本。
總結(jié)
如有錯誤或未考慮完全的地方,望不吝賜教
相關(guān)文章
Spring Cloud Gateway 內(nèi)存溢出的解決方案
這篇文章主要介紹了Spring Cloud Gateway 內(nèi)存溢出的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07
Springboot整合Shiro使用yml文件管理Urls方式
這篇文章主要介紹了Springboot整合Shiro使用yml文件管理Urls方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2026-03-03
關(guān)于Java中String創(chuàng)建的字符串對象內(nèi)存分配測試問題
這篇文章主要介紹了Java中String創(chuàng)建的字符串對象內(nèi)存分配測試,給大家詳細介紹了在創(chuàng)建String對象的兩種常用方法比較,通過示例代碼給大家介紹的非常詳細,需要的朋友可以參考下2021-07-07
利用JavaFX工具構(gòu)建Reactive系統(tǒng)
這篇文章主要介紹了使用JavaFX構(gòu)建Reactive系統(tǒng),利用JavaFX工具集中的新的超棒特性來構(gòu)建響應式的快速應用程序,感興趣的小伙伴們可以參考一下2016-02-02
Springboot自動配置與@Configuration配置類詳解
這篇文章主要介紹了SpringBoot中的@Configuration與自動配置,在進行項目編寫前,我們還需要知道一個東西,就是SpringBoot對我們的SpringMVC還做了哪些配置,包括如何擴展,如何定制,只有把這些都搞清楚了,我們在之后使用才會更加得心應手2022-07-07

