跟着视频学习java,发现swagger打不开?怎么解决

前因

现在到处都在卷java,不会java的前端不是好前端。

这不,周围有前端同学开始学java了。

昨天他突然找我问说引入依赖,配置之后swagger打不开了。

分析过程

1、

查看他的swagger版本,让他试了对应路径/swagger-ui/index.html,确定一下真的打不开

2、

依赖和swagger配置拿过来我的纯净项目里边,发现能跑。如下

@Configuration
@EnableSwagger2
public class InitSwagger {@Beanpublic Docket api() {return new Docket(DocumentationType.SWAGGER_2).select().apis(RequestHandlerSelectors.basePackage("com.springbootlearn.controller")) // 替换成你的Controller包名.paths(PathSelectors.any()).build().apiInfo(new ApiInfoBuilder().title("API文档").description("描述你的API信息").version("1.0").build());}
}
        <dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>3.0.0</version></dependency>

 

3、

他的项目压缩,发给我,发现我这也访问不到。

我再一看,他的配置里边有个静态资源配置如下,这是他照着学习视频写的。

@Slf4j
@Configuration
public class WebResources extends WebMvcConfigurationSupport {@Overrideprotected void addResourceHandlers(ResourceHandlerRegistry registry) {log.info("启动资源映射");super.addResourceHandlers(registry);registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");}
}

说实话,这个配置我不太熟悉,有点忘记了。但是一看就是和静态资源相关。而且一眼看过去有点疑惑,为什么super的调用不是放在最后。

注释掉,访问到swagger一气呵成。

4、

明白了问题所在,开始分析这个配置的作用,看起来是拦截static的路径到自己static的资源目录下。不管三七二十八直接debug到FrameworkServlet下doGet里边,最后来到了doDispatch下的getHandler方法中查看handlerMappings的SimpleUrlHandlerMapping中的urlMap。

对比后发现上述配置中urlMap的key只有一个/static/**

而不加配置urlMap的key有以下

 5、

分析到这里,想要让以上配置正确能访问到swagger,我相信你已经想到办法了,就是再加swagger-ui的前缀,如下

@Slf4j
@Configuration
public class WebResources extends WebMvcConfigurationSupport {@Overrideprotected void addResourceHandlers(ResourceHandlerRegistry registry) {log.info("启动资源映射");super.addResourceHandlers(registry);registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");registry.addResourceHandler("/swagger-ui/**").addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/").resourceChain(false);}
}

访问之后发现通了。你以为结束了吗?没有。

6、

但是,但是你想过没,如果我们引入其他内置框架也有静态资源呢,难不成引入一种,去查一种?这种重写的方法显然不合适,我们要做的是追加而不是重写。但是如何追加?我也不知道,所以现在开始看配置。既然swagger能追加,我们也能追加,我们看swagger怎么做的就好了。

点进去super.addResourceHandlers(registry);发现是空实现,这也就说明了这个玩意放在哪都无所谓,解答了我前边的疑惑。直接在WebMvcConfigurationSupport类里边搜索this.addResourceHandlers(registry);看看如果我们不实现addResourceHandlers方法,框架是怎么默认走的。

最后来到WebMvcConfigurerComposite的addResourceHandlers方法,可以看到是遍历delegates分别添加,这不就是追加嘛!

当delegates是swagger的配置时 我们点进去查看,发现如下场景

 人家是实现了WebMvcConfigurer而不是继承的WebMvcConfigurationSupport,照猫画虎呗,结果就有了以下配置

@Slf4j
@Configuration
public class WebResources implements WebMvcConfigurer {@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/").resourceChain(false);}
}

尝试访问,可以访问,完结。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/124495.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

爬虫数据清洗可视化实战-就业形势分析

基于采集和分析招聘网站的数据的芜湖就业形势的调查研究 一、引言 本报告旨在分析基于大数据的当地就业形势&#xff0c;并提供有关薪资、工作地点、经验要求、学历要求、公司行业、公司福利以及公司类型及规模的详细信息。该分析是通过网络爬虫技术对招聘网站的数据进行采集…

基于Simulink的用于电力系统动态分析

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

【Unity3D赛车游戏优化篇】【八】汽车实现镜头的流畅跟随,以及不同角度的切换

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…

华为mate60 上线 媒介盒子多家媒体报道

为什么你的品牌营销不见效&#xff1f;如何能推动品牌破圈&#xff1f;让媒介盒子给你一些启发。本期盒子要跟大家分享地新机上市&#xff0c;数码科技行业企业该如何做线上宣传。 HUAWEI Mate 60系列8月29日官宣发布&#xff0c;出色的拍照功能、强大的性能表现和持久的续航能…

【C++二叉树】进阶OJ题

【C二叉树】进阶OJ题 目录 【C二叉树】进阶OJ题1.二叉树的层序遍历II示例代码解题思路 2.二叉搜索树与双向链表示例代码解题思路 3.从前序与中序遍历序列构造二叉树示例代码解题思路 4.从中序与后序遍历序列构造二叉树示例代码解题思路 5.二叉树的前序遍历&#xff08;非递归迭…

科技云报道:AI+云计算共生共长,能否解锁下一个高增长空间?

科技云报道原创。 在过去近一年的时间里&#xff0c;AI大模型从最初的框架构建&#xff0c;逐步走到落地阶段。 然而&#xff0c;随着AI大模型深入到千行百业中&#xff0c;市场开始意识到通用大模型虽然功能强大&#xff0c;但似乎并不能完全满足不同企业的个性化需求。 大…

【优选算法】—— 前缀和算法

前言&#xff1a; 本期&#xff0c;我将要带大家学习的是有关前缀和算法的学习&#xff01;&#xff01;&#xff01; 目录 &#xff08;一&#xff09;什么是前缀和算法 &#xff08;二&#xff09;题目讲解 1、【模板】前缀和 2、【模板】二维前缀和 3、 和可被K整除的…

动态内存申请

动态内存申请 静态分配 1、 在程序编译或运行过程中&#xff0c;按事先规定大小分配内存空间的分配方式。int a [10] 2、 必须事先知道所需空间的大小。 3、 分配在栈区或全局变量区&#xff0c;一般以数组的形式。 4、 按计划分配 动态分配 1、在程序运行过程中&#xff0c…

python读取.txt文件中某些关键字后面的内容 并根据该数据画图

感谢一下悦姐帮忙 import re#先把文件读进来&#xff0c;用read读入的是字符串&#xff0c;readlines是list with open(resok.txt) as f:txt f.read()dataset r5low:.*|5mix:.*|5normal:.* para rMAE: (.{6})#意思是MAE&#xff1a; 后面的六个东西 row_data re.findall(d…

【Arduino27】DHT11温湿度传感器模拟值实验

硬件准备 DHT11温湿度&#xff1a;1个 面包板&#xff1a;1个 杜邦线&#xff1a;3根 硬件连线 VDD引脚接 5V 电源 DATE引脚接 4号 接口 GND引脚接 GND 接口 软件程序 #include<DHT.h>#define DHT11_pin 4 //温湿度传感器引脚DHT dht(DHT11_pin,DHT11);float tem…

QuantLib学习笔记——看看几何布朗运动有没有股票走势的感觉

⭐️ 小鹿在乱撞 小伙伴们肯定看过股票的走势&#xff0c;真是上蹿下跳啊&#xff0c;最近小编学了一丢丢关于随机过程和QuantLib的知识&#xff0c;想利用随机过程生成一个类似股票价格走势的图&#xff0c;安排&#xff01;&#xff01;&#xff01; ⭐️ 随机过程 随机过程…

JS中call方法是什么,call()的原理是什么?如何手写一个call()?Symbol是什么,怎么用Symbol调优?含详细解析

&#x1f389;call() &#x1f495;call()的参数 thisArg&#xff1a;在调用 func 时要使用的 this 值 arg1, …, argN &#xff08;可选&#xff09; 函数的参数 ✨call()的描述&#xff1a; 首先声明 func是一个函数&#xff0c;person是一个对象 针对这段代码&#xff1a;f…

Json“牵手”亚马逊商品详情数据方法,亚马逊商品详情API接口,亚马逊API申请指南

亚马逊平台是美国最大的一家网络电子商务公司&#xff0c;亚马逊公司是1995年成立&#xff0c;刚开始只做网上书籍售卖业务&#xff0c;后来扩展到了其他产品。现在已经是全世界商品品种最多的网上零售商和第二互联网公司&#xff0c;亚马逊是北美洲、欧洲等地区的主流购物平台…

【2023最新版】腾讯云CODING平台使用教程(Pycharm/命令:本地项目推送到CODING)

目录 一、CODING简介 网址 二、CODING使用 1. 创建项目 2. 创建代码仓库 三、PyCharm&#xff1a;本地项目推送到CODING 1. 管理远程 2. 提交 3. 推送 4. 结果 四、使用命令推送 1. 打开终端 2. 初始化 Git 仓库 3. 添加远程仓库 4. 添加文件到暂存区 5. 提交更…

OPENCV+QT环境配置

【qtopencv开发入门&#xff1a;4步搞定opencv环境配置2】https://www.bilibili.com/video/BV1f34y1v7t8?vd_source0aeb782d0b9c2e6b0e0cdea3e2121eba 第一步&#xff1a; 安装QT Qt 5.15 第二步&#xff1a; 安装OPENCV VS2022 Opencv4.5.5 C 配置_愿飞翔的鱼儿的博客…

认识doubbo和rpc

开个新坑&#xff0c;和大家一起学习Dubbo 3.X。我们按照一个由浅入深顺序来学习&#xff0c;先从使用Dubbo开始&#xff0c;再深入Dubbo的核心原理。 今天我们就从认识Dubbo开始&#xff0c;整体的内容可以分为3个部分&#xff1a; Dubbo是什么RPC是什么Dubbo的架构 正式开…

uniapp项目实践总结(十一)自定义网络检测组件

导语&#xff1a;很多时候手机设备会突然没网,这时候就需要一个网络检测组件,在没网的时候显示提示用户,提供用户体验。 目录 准备工作原理分析组件实现实战演练案例展示 准备工作 在components新建一个q-online文件夹&#xff0c;并新建一个q-online.vue的组件&#xff1b;…

[刷题记录]牛客面试笔刷TOP101

牛客笔试算法必刷TOP101系列,每日更新中~ 1.合并有序链表2023.9.3 合并两个排序的链表_牛客题霸_牛客网 (nowcoder.com) 题意大致为: 将两个链表中的元素按照从小到大的顺序合并成为一个链表. 所给予的条件: 给出的所要合并的链表都是从小到大顺序排列的. 思路: 创建一…

[Java]异常

目录 1.异常的概念与体系结构 1.1异常的概念 1.1.1算术异常 1.1.2数组越界异常 1.1.3空指针异常 1.2异常的体系结构 1.3异常的分类 2.异常的处理 2.1 防御式编程 2.2异常的抛出 2.3异常的捕获 2.3.1 异常声明throws 将光标放在抛出异常方法上&#xff0c;alt Insert …

SAC算法

SAC算法 全称Soft Actor-Critic算法&#xff0c;为优化目标引入了熵约束项&#xff0c;增大了动作的探索性&#xff0c;避免陷入局部最优解&#xff0c;原论文 继承了Soft Q-Learning提出了Soft Policy Iteration&#xff0c;进而推导了Soft Actor-Critic参数更新时机&#xff…