繼承WebMvcConfigurationSupport和實現WebMvcConfigurer區別


前言

搭建oss服務實現了文件上傳, 文件路徑獲取, 文件流獲取等基礎功能

后來新增一個需求: 當外部請求打到oss服務時實現接口透傳, 什么意思呢?

因為搭建的oss服務接口對外暴露的訪問路徑都是/oss開頭的, 外部請求訪問路徑卻是形如 192.168.1.234:8900/bypass/test/oss_file.sql (ip和端口是oss服務的ip和端口)

 

所以就想, 在controller層配置requestMapping為"/**" 同時自定義攔截器, 對上述需要透傳的請求進行攔截, 通過httpClient向文件服務器發請求讀取資源, 然后將讀取的資源回寫到response返回給調用方, 說白了透傳就是指oss服務只是轉一下手, 流程大致如下

 

 

oss服務中總共有1個controller1

controller1 /oss  處理192.168.1.234:8900/oss/import 等這類請求

此時為了處理非/oss開頭的請求, 新增了一個controller2

controller2 /**  處理192.168.1.234:8900/bypass/test/oss_file.sql等非/oss開頭的請求

添加攔截器單獨處理非/oss開頭的請求

 

沒什么問題

然鵝, 需求來了, 需要集成swagger2, swagger2的訪問路徑一般都是ip:port/swagger-ui.html 

因為上面controller2已經配置了資源請求/**, 所以swagger2的資源也會進入該controller, 導致swagger訪問受影響, 真是個兩難的問題, 去掉/**沒法處理非/oss開頭的請求, 加上/**無法訪問swagger

 

百思不得其解, 搜到springboot如何讓靜態資源不走controller, 看到通過實現WebMvcConfigure可以做到, 看了自己代碼是通過繼承WebMvcConfigurationSupport, 改為實現WebMvcConfigurer后果然好使了!!!

那么問題來了, 這兩者有什么聯系和差異??

https://www.cnblogs.com/JonaLin/p/11633820.html

https://www.cnblogs.com/jrjrzivvv/p/12741203.html

 

感謝

https://www.zhihu.com/question/64294072/answer/366268460

 

 

 


免責聲明!

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



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