zoukankan      html  css  js  c++  java
  • 继承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

  • 相关阅读:
    代码 技术债务 打分
    C++ boost coroutine
    什么是 Python Django Flask &Tornado
    Quartz应用与集群原理分析
    和开源产品对比
    Apache Storm || Processing real-time data
    认清自我,不在迷茫 程序员
    快速傅里叶变换算法
    Netty和Tomcat的区别、性能对比
    HTTP vs. MQTT ->TCP
  • 原文地址:https://www.cnblogs.com/yadongliang/p/13491860.html
Copyright © 2011-2022 走看看