前言
搭建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