一個項目中:只能存在一個 WebMvcConfigurationSupport (靜態文件失效之坑)


一個項目中:只能存在一個 WebMvcConfigurationSupport

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

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

 

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

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

目錄結構如下:

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

 

導致原來的靜態文件放行已經失效了

解決辦法:

方案一:將LongToJsonConfig的繼承去掉

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

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

修改完成后靜態文件能夠正常訪問了:

 

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

 下面是兩條idworker生成的數據庫數據。

 rest接口測試工具測試時還是正常的:

vue前台進行訪問時:

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

 

 前端vue正常返回數據

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

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

 源碼上面的翻譯;

 

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

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM