继承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

 

 

 

posted @ 2020-08-12 21:44  习惯沉淀  阅读(2299)  评论(0编辑  收藏  举报