一個專案中:只能存在一個 WebMvcConfigurationSupport (靜態檔案失效之坑)

神碼是浮雲發表於2019-08-01

一個專案中:只能存在一個 WebMvcConfigurationSupport

在一個專案中WebMvcConfigurationSupport只能存在一個,多個的時候,只有一個會生效。

靜態檔案訪問失效原因:寫配置的時候,沒有注意,在網上找的程式碼,靜態檔案放行的配置,在幾天前經過各種嘗試,什麼application.properties裡面配置無效,需要通過自定義實現程式碼放行靜態配置,

 

 改成下面的編碼方式放行靜態資源:都是正常的

後來下面中需要用到 IdWorker生成主鍵,但是在返回給前端頁面時,資料精度經常丟失,很難保證精度,於是網上尋找解決辦法,最終採用如下方法:

目錄結構如下:

 由於這兩個配置都繼承了WebMvcConfigurationSupport ,只能有一個生效

 

導致原來的靜態檔案放行已經失效了

解決辦法:

方案一:將LongToJsonConfig的繼承去掉

方案二:將兩個配置寫在一個類裡面。

很不幸的是:我採用方案一,結果靜態檔案好了,但是轉換器轉換檔案失敗了。

修改完成後靜態檔案能夠正常訪問了:

 

 尷尬的事情是一個接著一個,剛剛把靜態檔案恢復正常了,忘了測試idworker了,一測試發現不能夠正常轉換了,你說尷尬不尷尬啊。

 下面是兩條idworker生成的資料庫資料。

 rest介面測試工具測試時還是正常的:

vue前臺進行訪問時:

 精度還是丟失了,改用方案二:

 

 前端vue正常返回資料

開啟WebMvcConfigurationSupport類,發現有一個和當前轉化器配置同名方法,由於網上的找的,沒有說明是配置類的重寫的方法,導致判斷失誤。

綜上所述:自定義轉化器必須重寫WebMvcConfigurationSupport 的 configureMessageConverters方法

 原始碼上面的翻譯;

 

這是一個大坑,折騰了一天半,希望對遇到的朋友有所幫助~~~

 部落格翻了不下100篇,都是講的怎麼放行靜態資源通過自定義方法,這根本不是我想要的,最後還是應該感謝這位兄弟:一句不經意的話提醒了我,萬分感謝~~~

https://blog.csdn.net/wodeshouji6/article/details/93076011

相關文章